المصادقة في الساعه

الإعلانات

المصادقة في الساعه

 

 

المصادقة في الساعه

بإستخدام الساعات المستقلة الملائمه، يمكن الآن تشغيل التطبيقات التي تعمل على نظام الساعات بالكامل، على الساعة بدون وجود تطبيق مصاحب.

وهذه الإمكانية الجديدة، تعني أيضاً أن التطبيقات المستقلة لنظام تشغيل الساعات ستحتاج إلى إدارة المصادقة بنفسها..

عندما تحتاج التطبيقات للوصول إلى بيانات من السحابه. يعتمد نظام تشغيل الساعات على العديد من طرق المصادقة..

لتمكين تطبيقات الساعه المستقلة من الحصول على شهادات مصادقة المستخدم.

 

يدعم نظام تشغيل الساعات حالياً أساليب المصادقة التالية:

تسجيل الدخول بواسطة قوقل
دعم بروتوكول التفويض مفتوح الإصدار OAuth 2.0 “Open Authorization”
تمرير الرموز عبر طبقة البيانات
كود مخصص المصادقة

الأقسام التالية تصف كيفية دمج أساليب المصادقة المذكورة أعلاه في تطبيقات الساعه.

 

 

 

 

تسجيل الدخول بواسطة قوقل


يتسجيل الدخول بواسطة قوقل يتيح للمستخدم إمكانية تسجيل الدخول بإستخدام حساب قوقل الحالي الخاص به.

فهو يقدم أفضل تجربة للمستخدم كما أنه يسهل دعمه، خاصة إذا قمت بالفعل بتنفيذ هذه الحلول في تطبيقات الهاتف.

يعد تسجيل الدخول بواسطة قوقل، هو الحل الأكثر تفضيلاً لأنه يعمل بشكلٍ جيد أيضاً على نظام تشغيل iOS.

يوضح القسم التالي كيفية إكمال الدمج الأساسي لعملية تسجيل الدخول بواسطة قوقل.

 

 

 

المتطلبات الأساسية

قبل أن تتمكن من البدء في دمج تسجيل الدخول بواسطة قوقل في تطبيق الساعه، يجب عليك تهيئة مشروع وحدة تحكم..

واجهة برمجة تطبيقات قوقل “Google API Console” وإعداد مشروع أندرويد ستوديو. لمزيد من المعلومات..

راجع دليل البدء في دمج تسجيل الدخول بواسطة قوقل.

 

ملاحظة: إذا كنت تستخدم تسجيل الدخول بواسطة قوقل مع تطبيق أو موقع يتواصل مع خادم “سيرفر” خلفي..

فقم بإنشاء معرف عميل تطبيق الويب الإصدار 2.0 من بروتوكول التفويض المفتوح لخادمك الخلفي. معرف العميل هذا يختلف عن معرف عميل تطبيقك.

لمزيد من المعلومات، راجع تمكين الوصول من جهة الخادم.

 

مهم: إذا كان تطبيقك يتصل بخادم خلفي، فحدد المستخدم الذي سجل الدخول حالياً بشكلٍ آمن على الخادم..

عن طريق إرسال رمز معرف المستخدم بإستخدام HTTPS. لمعرفة كيفية مصادقة مستخدمك على الخادم الخلفي، راجع المصادقة مع الخادم الخلفي.

 

 

دمج تسجيل الدخول بواسطة قوقل في تطبيقك

لدمج تسجيل الدخول بواسطة قوقل في تطبيق الساعه:

1- تهيئة تسجيل الدخول بواسطة قوقل.
2- إضافة زر تسجيل الدخول بواسطة قوقل.
3- بدء تدفق تسجيل الدخول عند النقر على زر تسجيل الدخول.

 

 

 

تهيئة تسجيل الدخول بواسطة قوقل وإنشاء كائن “عميل واجهة برمجة تطبيقات قوقل” GoogleApiClient

في دالة الإنشاء onCreate الخاصة بنشاط تسجيل الدخول، عليك تهيئة تسجيل الدخول بواسطة قوقل..

لتقوم بطلب بيانات المستخدم التي يتطلبها تطبيقك. ثم قم بإنشاء كائن GoogleApiClient مع إمكانية الوصول إلى..

واجهة برمجة تطبيقات تسجيل الدخول بواسطة قوقل والخيارات التي قمت بتحديدها.

KOTLIN

// Configure sign-in to request the user's ID, email address, and basic
// profile. The ID and basic profile are included in DEFAULT_SIGN_IN.
// If you need to request additional scopes to access Google APIs, specify them with
// requestScopes().
googleApiClient = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build()
        .let { signInConfigBuilder ->
            // Build a GoogleApiClient with access to the Google Sign-In API and the
            // options specified in the sign-in configuration.
            GoogleApiClient.Builder(this)
                    .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                    .addApi(Auth.GOOGLE_SIGN_IN_API, signInConfigBuilder)
                    .build()
        }

JAVA

// Configure sign-in to request the user's ID, email address, and basic
// profile. The ID and basic profile are included in DEFAULT_SIGN_IN.
// If you need to request additional scopes to access Google APIs, specify them with
// requestScopes().
GoogleSignInOptions.Builder signInConfigBuilder = new GoogleSignInOptions
        .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();

// Build a GoogleApiClient with access to the Google Sign-In API and the
// options specified in the sign-in configuration.
googleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
        .addApi(Auth.GOOGLE_SIGN_IN_API, signInConfigBuilder)
        .build();

 

 

 

 

إضافة زر تسجيل الدخول بواسطة قوقل إلى تطبيقك

1- قم بإضافة “زر تسجيل الدخول” SignInButton إلى مخطط تطبيقك.

<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

 

 

2- في دالة الإنشاء ()onCreate لتطبيقك، قم بتسجيل OnClickListener في الزر الخاص بك للقيام بعملية تسجيل دخول المستخدم عند النقر على الزر.

KOTLIN

findViewById<View>(R.id.sign_in_button).setOnClickListener(this)

JAVA

findViewById(R.id.sign_in_button).setOnClickListener(this);

 

 

 

 

قم بإنشاء غرض تسجيل الدخول وابدأ تدفق تسجيل الدخول

عند النقر على زر تسجيل الدخول، قم بمعالجة النقر فوق زر تسجيل الدخول في دالة ()onCLick بإنشاء غرض تسجيل الدخول..

بإستخدام دالة “جلب غرض تسجيل الدخول” getSignInIntent، ثم بدء الغرض بإستخدام دالة “بدء النشاط من أجل النتيجه” startActivityForResult.

KOTLIN

Auth.GoogleSignInApi.getSignInIntent(googleApiClient).also { signInIntent ->
    startActivityForResult(signInIntent, RC_SIGN_IN)
}

JAVA

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);

 

 

تتم مطالبة المستخدم بتحديد حساب قوقل لتسجيل الدخول به. إذا طلبت نطاقات من خارج الملف الشخصي، البريد الإلكتروني..

و بروتوكول المصادقة المفتوح، فسوف تتم مطالبة المستخدم أيضاً بمنح إمكانية الوصول إلى هذه المصادر.

وأخيراً، في دالة “نتيجة النشاط” onActivityResult للنشاط ، قم بإستيراد نتيجة تسجيل الدخول بإستخدام..

“جلب نتيجة تسجيل الدخول من الغرض” getSignInResultFromIntent. بعد إستيراد نتيجة تسجيل الدخول..

يمكنك التحقق من نجاح تسجيل الدخول بإستخدام الدالة “ناجحه” isSuccess. إذا نجح تسجيل الدخول، يمكنك..

إستدعاء الداله “جلب حساب تسجيل الدخول” getSignInAccount للحصول على كائن “حساب تسجيل دخول قوقل” GoogleSignInAccount ..

الذي يحتوي على معلومات حول المستخدم الذي تم تسجيل الدخول إليه، مثل أسم المستخدم.

KOTLIN

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...)
    if (requestCode == RC_SIGN_IN) {
        Auth.GoogleSignInApi.getSignInResultFromIntent(data)?.apply {
            if (isSuccess) {
                // Get account information
                fullName = signInAccount?.displayName
                mGivenName = signInAccount?.givenName
                mFamilyName = signInAccount?.familyName
                mEmail = signInAccount?.email
            }
        }
    }
}

JAVA

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...)
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (signInResult.isSuccess()) {
            GoogleSignInAccount acct = signInResult.getSignInAccount();

            // Get account information
            fullName = acct.getDisplayName();
            givenName = acct.getGivenName();
            familyName = acct.getFamilyName();
            email = acct.getEmail();
        }
    }
}

 

لمشاهدة نموذج تطبيق يقوم بتنفيذ تسجيل الدخول بواسطة قوقل، أطلع على نموذج التطبيق.

 

 

 

 

 

دعم بروتوكول التفويض مفتوح الإصدار 2.0


توفر الساعه دعم بروتوكول التفويض المفتوح الإصدار 2.0، لتطبيقات الجهات الخارجية لمصادقة مستخدم خدمة الويب.

بالنظر إلى الساعات ذات الشاشات المحدودة ، دعم بروتوكول التفويض المفتوح لأنظمة الساعات..

يسمح لتطبيقات الساعه المستقلة، بإكمال تدفق مصادقة التفويض المفتوح عبر الهاتف.

تستخدم التطبيقات المستقلة، نموذج طلب وإستجابة، لعنوان URL لمصادقة المستخدم والحصول على رمز التفويض المفتوح، للوصول إلى الخدمة.

 

ملاحظة: إذا كان إصدار تطبيق الساعه 2.0 يحتوي على تطبيق هاتف مصاحب، فقم بإستخدام نفس أسم الحزمة لتطبيق الساعه وتطبيق ذلك الهاتف.

 

 

المتطلبات الأساسية

قبل البدء، قم بإنشاء معرف عميل تطبيق الويب، للتفويض المفتوح 2.0 لخادمك الخلفي. معرف العميل هذا يختلف عن معرف عميل تطبيقك.

يمكنك العثور على معرف عميل أو إنشاؤه لخادمك، في “وحدة تحكم واجهة برمجة تطبيقات قوقل” Google API Console.

 

 

التدفق

1- ينفذ المستخدم إجراء بإستخدام تطبيق خارجي، يتطلب مصادقه.

2- التطبيق الخارجي يرسل طلباً إلى التطبيق المصاحب لنظام تشغيل الساعات بإستخدام خدمات واجهة برمجة التطبيقات..

“إرسال طلب المصادقه” ()sendAuthorizationRequest، لفتح معاينة الويب بإستخدام عنوان URL للمصادقه.

3- موقع ويب URL يخول المستخدم (يسأل المستخدم عن أسم المستخدم وكلمة المرور وربما ينفذ بعض المصادقة الثنائية وغيرها).

4- بعد نجاح أو فشل المصادقه، ينفذ الموقع إستدعاء لعنوان URL (للخادم الخلفي للتطبيق) المحدد في الطلب بإستخدام كود المصادقة.

5- يقوم الخادم الخلفي بإستبدال كود المصادقة للوصول ويقوم بتحديث الرموز من خادم التفويض المفتوح.

6- عندها يقوم الخادم الخلفي بإعادة توجيه الإستجابة للإنتقال إلى تطبيق الساعه الخارجي من خلال التطبيق المرافق لنظام تشغيل الساعات.

7- يتلقى التطبيق المرافق لنظام تشغيل الساعات عملية إعادة التوجيه تلك ويستخدم واجهة برمجة تطبيقات دعم الساعات..

“إستجابة المصادقه” ()onAuthorizationResponse ، لإرسال الإستجابة بأكملها من الخادم إلى تطبيق الساعة.

8- يقوم التطبيق الخارجي بتوزيع الإستجابة من موقع المصادقة ويستخرج رمز مصادقة من الإستجابة.

9- يستخدم التطبيق الخارجي رمز المصادقة بإعتباره بيانات معتمده في طلباته المستقبلية.

 

 

Rich Client Platform = RPC منصة العميل الغنيه

 

لتنفيذ تدفق المصادقة المذكور أعلاه، يجب عليك القيام بما يلي:

1- إنشاء معرف العميل والعميل الخفي.
2- تنفيذ طلب المصادقة.
3- التعامل مع إستجابة المصادقة.

 

 

 

 

 

إنشاء معرف العميل والعميل الخفي

تطبيقات الساعة التي تستخدم الإصدار 2.0 من بروتوكول التفويض المفتوح يجب أن تنشئ معرف عميل وعميل خفي يحددان التطبيق..

إلى موفر التفويض المفتوح. يجب إعداد مشروع وحدة تحكم واجهة برمجة التطبيقات للحصول على بيانات الإعتماد هذه.

 

 

 

 

تنفيذ طلب المصادقة

لتنفيذ طلب مصادقة إلى موفر التفويض المفتوح، قم أولاً بإنشاء كائن عميل والذي سوف تستخدمه في جعل..

طلبات التفويض المفتوح 2.0 بداخل دالة ()onCreate الخاصة بك.

 

ملاحظة: لضمان عدم إيقاف تشغيل تطبيقك عندما تنتقل الساعة إلى الوضع المحيطي، قم بتمكين “يعمل دائماً” Always-on، (بواسطة “ضبط تمكين الوضع المحيطي” setAmbientEnabled)..

في نشاط التفويض المفتوح لتطبيقك. لمزيد من المعلومات حول أفضل ممارسات الوضع المحيطي، راجع صفحة “أجعل تطبيقك مرئياً“.

KOTLIN

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    oAuthClient = OAuthClient.create(this)
    …
}

JAVA

@Override
public void onCreate(Bundle b) {
    super.onCreate(b);
    oAuthClient = OAuthClient.create(this);
    …
}

 

 

بعد ذلك، قم بإنشاء عنوان URL الذي يتضمن نقطة نهاية التفويض المفتوح للحصول على رمز، معرّف عميل التفويض المفتوح لخادمك ..

عنوان URL لإعادة التوجيه (لخادمك الخلفي)، ونوع الإستجابه.

طلب عنوان URL مشابه لما يلي:

https://accounts.google.com/o/oauth2/v2/auth?response_type=code
&client_id="your_client_id_here";
&scope=https://www.googleapis.com/auth/plus.login
&redirect_uri=https://myserver.com

 

بعد إنشاء طلب المصادقة، يمكنك إرسال الطلب إلى التطبيق المصاحب بإستخدام واجهة برمجة تطبيقات خدمات الساعه..

“إرسال طلب المصادقه”، ()sendAuthorizationRequest .

يقوم هذا الطلب بتشغيل نداء الإجراء البعيد “Remote Procedure Calls” RPC إلى التطبيق المرافق، مما يؤدي إلى تقديم واجهة مصادقه على هاتف المستخدم.

يصادق موفر التفويض المفتوح 2.0 على المستخدم ويحصل على موافقة المستخدم لتطبيقك للوصول إلى النطاقات المطلوبة.

يتم إرسال الإستجابة مرة أخرى إلى الخادم الخلفي، بإستخدام عنوان URL لإعادة التوجيه الذي قمت بتحديده.

 

 

 

التعامل مع إستجابة المصادقة

بعد إجراء مصادقة ناجحة أو فاشله، يقوم خادم التفويض المفتوح 2.0 بإعادة التوجيه إلى عنوان URL المحدد في الطلب.

إذا وافق المستخدم على طلب الوصول، فإن الإستجابة ستحتوي على رمز مصادقه. إذا لم يوافق المستخدم على الطلب، ستحتوي الإستجابة على رسالة خطأ.

ستكون الإستجابة لنموذج سلسلة إستعلام، كما هو موضح أدناه:

https://myserver.com/oauthtokens?code=xyz

 

بعد أن يتلقى الخادم الخلفي رمز المصادقه، يمكنه إستبدال رمز المصادقه لرمز وصول. ثم يقوم الخادم الخلفي بإرجاع إعادة توجيه HTTP 302 إلى تطبيق الهاتف الخاص بنظام تشغيل الساعات الذي تم تسجيله كمستلم لعناوين URL للنموذج:
https://wear.googleapis.com/3p_auth/app.html?full_suffix_from_redirect=com.your.package.name?accessToken=abc&refreshToken=xyz.

يتحقق تطبيق الهاتف من عنوان URL للإستجابة ومن ثم ينقل الإستجابة إلى تطبيق الساعة الخارجي..

بإستخدام واجهة برمجة تطبيقات “إستجابة المصادقه” onAuthorizationResponse.

 

ملاحظة: تأكد من أن أسم حزمة التطبيق هو مكون المسار الثالث في عنوان URL لإعادة التوجيه. لذا، يجب أن يكون ..

معرف الموارد الموحد المعاد توجيهه” redirect_uri مساوياً لـ:
https://wear.googleapis.com/3p_auth/<receiving app’s packagename>

مثال:
https://wear.googleapis.com/3p_auth/com.package.name.

التطبيق الخارجي على الساعة يقوم بإستخراج رمز المصادقة من الإستجابة ويستخدمه كإعتماد في طلباته المستقبلية.

KOTLIN

oAuthClient.sendAuthorizationRequest(Uri.parse(requestUrl), MyOAuthCallback())

JAVA

// The callback provided will be called when the OAuth request completes.
oAuthClient.sendAuthorizationRequest(Uri.parse(requestUrl), new MyOAuthCallback());

 

KOTLIN

private class MyOAuthCallback : OAuthClient.Callback() {

    override fun onAuthorizationResponse(requestUrl: Uri, responseUrl: Uri) {
        Runnable {
            acquireToken()
            accessAPI()
        }.apply {
            ...
        }
    }
}

JAVA

private class MyOAuthCallback extends OAuthClient.Callback {
    @Override
    public void onAuthorizationResponse(Uri requestUrl, Uri responseUrl) {
        Runnable r =
            new Runnable() {
                public void run() {
                    acquireToken();
                    accessAPI();
                }
            };
    }
}

 

لرؤية التنفيذ الكامل لهذا التدفق، قم بإلقاء نظرة على النموذج.

 

ملاحظة: لأهداف هذا النموذج، تقوم الساعة بمعالجة تبادل الرموز. كأحد أفضل الممارسات ، قم بتعيين عنوان URI المعاد توجيهه إلى..

عنوان URL الخاص بخادمك، حيث يمكن للخادم إجراء تبادل لكود رمز المصادقه.

 

 

 

 

تمرير الرموز عبر طبقة البيانات


يعمل هذا الخيار فقط مع الساعات المقترنة بأجهزة تعمل بنظام الأندرويد. يمكن للتطبيق المصاحب على الهاتف..

نقل بيانات المصادقة بشكلٍ آمن إلى تطبيق الساعه عبر طبقة بيانات الساعه. يمكن نقل بيانات الإعتماد كرسائل أو كعناصر بيانات.

– للكشف عن تطبيقات الهاتف القادرة على التعامل مع الرسائل والإعلان عن تطبيق هاتفك مع القدرة على التعامل مع الطلب..

راجع الأقسام إعلان القدرات Advertise capabilities” وإستيراد العقد بالقدرات المطلوبة “Retrieve the nodes with the required capabilities“.

 

ملاحظة: نوصي بإرسال ملف APK للهاتف وملف APK للساعة بإستخدام نفس أسم الحزمة. يسمح هذا لتطبيقات الهاتف والساعه..

بالإتصال عبر طبقة عنصر البيانات DataItem وإجراء عملية نقل الرمز الأساسيه من الهاتف إلى الساعة لتوفير المصادقة.

 

 

 

التدفق

يمكنك إستخدام منطق العمل الخاص بك لتمرير بيانات الإعتماد بإستخدام واجهة برمجة تطبيقات طبقة البيانات.

يوضح الرسم البياني التالي إحدى طرق للحصول على رموز عبر طبقة بيانات الساعه.

 

 

كود مخصص المصادقه


طريقة المصادقة هذه تتطلب من المستخدم القيام بعملية المصادقة من مصدر خارجي (كهاتف /جهاز لوحي/كمبيوتر مكتبي)..

والحصول على رمز قصير الأجل يقوم بإدخاله لإثبات هويته وإستبداله لرمز المصادقه على الساعه.

بهذه الطريقة، يمكنك مصادقة المستخدمين على تطبيق الساعه إما بإستخدام نموذج تسجيل الدخول لتطبيقك..

أو من خلال دمج أي أسلوب تسجيل دخول مقدم من خدمة خارجية يدوياً في كود تطبيقك.

على الرغم من أن طريقة المصادقة هذه تتطلب عمل يدوي، و جهد إضافي لجعلها أكثر أماناً، إلا أنك لو كنت بحاجة إلى المصادقة مسبقاً، في تطبيقات الساعة المستقلة، فيمكنك إستخدام هذه الطريقة.

 

تدفق المصادقة لهذا الإعداد يعمل على النحو التالي:

1- ينفذ المستخدم إجراء على تطبيق خارجي، يتطلب مصادقه.

2- تطبيق الساعة الخارجي، يعرض شاشة مصادقة للمستخدم، ويطلب من المستخدم إدخال رمز من عنوان URL محدد.

3- ينتقل المستخدم إلى جهاز جوال / جهاز لوحي أو كمبيوتر مكتبي، يقوم بتشغيل المتصفح..

وينتقل إلى عنوان URL المحدد في تطبيق الساعه، ويقوم بتسجيل الدخول.

4- يتلقى المستخدم رمز قصير الأجل، يقوم بإدخاله في شاشة المصادقة، لتطبيق الساعه بإستخدام لوحة المفاتيح الموجودة على الساعه، للحصول على المصادقة:

5- بدءاً من هذه النقطة، يمكنك إستخدام الرمز الذي تم إدخاله كدليل على أن هذا هو المستخدم الصحيح..

وإستبدال ذلك، للرمز المخزن والمؤمن على الساعه، للمضي قدماً في طلبات المصادقه من الآن فصاعداً.

 

 

راجع أيضاً المصادر التاليه:

أفضل الممارسات لتسجيل الدخول
نموذج لتسجيل الدخول بواسطة قوقل
– نموذج للتفويض المفتوح


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات