عميل OAuth لجافا: نظرة عامة على المكتبات وأمثلة الكود

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

عميل OAuth لجافا: كيفية الاختيار والاستخدام

\n\n

OAuth (Open Authorization) — هو بروتوكول مفتوح يسمح بمنح طرف ثالث (مثل تطبيق جافا الخاص بك) وصولاً محدودًا إلى موارد المستخدم دون نقل اسم المستخدم وكلمة المرور الخاصة به. في تطوير الويب الحديث، يُعد OAuth 2.0 المعيار الفعلي للترخيص عبر شبكات التواصل الاجتماعي (Google، Facebook، VK) والأنظمة المؤسسية (Microsoft، GitHub).

\n\n

توجد العديد من المكتبات الناضجة لجافا التي تنفذ دور عميل OAuth والخادم. في هذه المقالة، سنستعرض ثلاثة من أشهر الحلول: ScribeJava، Spring Security OAuth و Google OAuth Client Library for Java. ستتعلم كيفية إضافتها إلى مشروعك، كتابة تكامل أساسي، واختيار الأداة المناسبة لمهامك.

\n\n

1. ScribeJava — عميل OAuth خفيف الوزن

\n\n

ScribeJava هي مكتبة بسيطة وخفيفة الوزن تدعم OAuth 1.0a و OAuth 2.0. وهي مثالية للتطبيقات المستقلة أو الخدمات المصغرة التي لا تتطلب مجموعة Spring الكاملة.

\n\n

الإضافة (Maven)

\n
<dependency>\n    <groupId>com.github.scribejava</groupId>\n    <artifactId>scribejava-apis</artifactId>\n    <version>8.3.3</version>\n</dependency>
\n\n

مثال: تسجيل الدخول عبر Google

\n
import com.github.scribejava.apis.GoogleApi20;\nimport com.github.scribejava.core.builder.ServiceBuilder;\nimport com.github.scribejava.core.model.*;\nimport com.github.scribejava.core.oauth.OAuth20Service;\n\npublic class GoogleOAuthExample {\n    public static void main(String[] args) throws Exception {\n        String clientId = "معرف_العميل_الخاص_بك";\n        String clientSecret = "سر_العميل_الخاص_بك";\n        String callbackUrl = "http://localhost:8080/callback";\n\n        OAuth20Service service = new ServiceBuilder(clientId)\n                .apiSecret(clientSecret)\n                .callback(callbackUrl)\n                .scope("email profile")\n                .build(GoogleApi20.instance());\n\n        // الحصول على URL لإعادة توجيه المستخدم\n        String authorizationUrl = service.getAuthorizationUrl();\n        System.out.println("افتح في المتصفح: " + authorizationUrl);\n\n        // بعد إعادة التوجيه، احصل على رمز التفويض (في التطبيق الحقيقي من QueryString)\n        String code = "رمز_من_إعادة_التوجيه";\n\n        // استبدال الرمز بالرمز المميز\n        OAuth2AccessToken accessToken = service.getAccessToken(code);\n        System.out.println("Access Token: " + accessToken.getAccessToken());\n\n        // استخدام الرمز المميز لطلب بيانات المستخدم\n        OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v2/userinfo");\n        service.signRequest(accessToken, request);\n        Response response = service.execute(request);\n        System.out.println("استجابة API: " + response.getBody());\n    }\n}
\n\n

مزايا ScribeJava:

\n
    \n
  • الحد الأدنى من التبعيات (فقط OkHttp أو URLConnection).
  • \n
  • دعم العشرات من المزودين مباشرة (Google، Facebook، GitHub، VK وغيرها).
  • \n
  • واجهة برمجة تطبيقات بسيطة بدون تجريدات معقدة.
  • \n
\n\n

2. Spring Security OAuth — للمشاريع على Spring Boot

\n\n

إذا كنت تستخدم Spring Boot، فإن Spring Security OAuth (الوحدة spring-security-oauth2-client) هو الخيار الأكثر طبيعية. فهو يتكامل بالكامل مع سلسلة Security ويسمح بتكوين المزودين عبر application.yml.

\n\n

الإضافة (Gradle)

\n
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
\n\n

مثال على التكوين (application.yml)

\n
spring:\n  security:\n    oauth2:\n      client:\n        registration:\n                    

توصيات