تعد مصادقة المستخدم مطلبًا أساسيًا في جميع تطبيقات المحمول المؤسسية تقريبًا. بالنسبة لتطبيقات الأجهزة المحمولة الداخلية مثل تلك المتعلقة بكشوف المرتبات والأجلة وحجز السفر التجاري ، تريد المؤسسات الاستفادة من التوقيع الواحد من خلال مصادقة المستخدمين مقابل خادم LDAP المحلي. وبالنسبة للتطبيقات المستهدفة للمستخدمين النهائيين حيث لا تتعرض بيانات المؤسسات مثل تطبيق لمستخدمي المنتجات الذي يسمح لهم برفع طلبات الخدمة ، فإن السماح للمستخدمين باستخدام تسجيل الدخول الاجتماعي الخاص بهم مثل تسجيل الدخول إلى Facebook/Google Login سيكون أسهل بكثير. يوضح نمط الرمز هذا كيف يمكن للمطورين الاستفادة من خدمة IBM Mobile Foundation لتنفيذ آليات مصادقة المستخدم التالية:
عندما تكمل نمط الرمز هذا ، ستفهم:

يوضح الرسم البياني أعلاه تدفق تسجيل الدخول (الموصوف هنا مع Google ولكن أيضًا ذا صلة بـ Facebook أو غيرهم من مقدمي الخدمات الاجتماعية). يوضح الرسم البياني أن المشغل للاتصال بمقدمي الخدمات الاجتماعية يبدأ من قبل العميل.

1. إعداد Ionic و MobileFoundation CLI
2. قم بإنشاء قاعدة بيانات Cloudant وقم بتعبئتها باستخدام بيانات العينة
3. قم بإنشاء خدمة تخزين كائن Cloud IBM وقم بتعبئتها ببيانات عينة
4. إنشاء خدمة الأساس المحمول وتكوين MFP CLI
5. إعداد خادم LDAP وعميل بوابة آمن
6. قم بتسجيل تطبيق Android مع Google و Facebook لتسجيل الدخول الاجتماعي
7. قم بتنزيل المصدر الريبو والتخصيص
7.1 استنساخ repo
7.2 تحديث معرف التطبيق والاسم والوصف
7.3 حدد بيانات اعتماد Cloudant في محول MobileFoundation
7.4 حدد بيانات اعتماد تخزين الكائن السحابية في محول MobileFoundation
7.5 حدد بيانات اعتماد LDAP في محول MobileFoundation
7.6 حدد بيانات اعتماد تسجيل الدخول إلى Google في محول MoileFoundation
7.7 حدد Facebook Appid و Google ClientId في التطبيق الأيوني
8. نشر محوطي MobileFoundation واختبار
8.1 بناء ونشر محوطي MobileFoundation
8.2 إطلاق لوحة معلومات MobileFoundation واضطر إلى تكوينات المحول
9. قم بتشغيل التطبيق على هاتف Android
يعتمد هذا المشروع على قمة https://github.com/ibm/ionic-mfp-app. قم بتشغيل الخطوات التالية من هذا المشروع الأساسي لتوفير خدمات الواجهة الخلفية المحمولة اللازمة من IBM Cloud وملبئها باستخدام بيانات العينة ، وكذلك لإعداد CLI الأيوني والهاتف المحمول على آلة التطوير الخاصة بك.
الخطوة 1. إعداد Ionic و MobileFoundation CLI
الخطوة 2. قم بإنشاء قاعدة بيانات Cloudant وقم بتعبئتها باستخدام نموذج البيانات
الخطوة 3. قم بإنشاء خدمة تخزين كائن Cloud IBM وقم بتعبئتها باستخدام نموذج البيانات
الخطوة 4. إنشاء خدمة الأساس المحمول وتكوين MobileFoundation CLI
إذا كان لديك إعداد وتشغيل خادم LDAP Enterprise ، فيمكنك تخطي بقية هذا القسم والانتقال إلى قسم "Secure Gateway Client". إذا لم يكن لديك أي إعداد خادم LDAP ، فيمكنك محاولة تثبيت Apacheds - https://directory.apache.org/apacheds. يتوفر دليل التثبيت والإعداد الأساسي لـ APACHEDS على-https://directory.apache.org/apacheds/basic-user-guide.html (يرجى الرجوع إلى القسم 1). استيراد نموذج البيانات المتاحة هنا عن طريق الخطوات التالية هنا. أضف إدخالًا جديدًا بتفاصيلك ، على سبيل المثال ،
لتكون قادرًا على الوصول إلى خادم LDAP المحلي الخاص بك من داخل خادم الأساس للهاتف المحمول الذي يعمل على IBM Cloud ، يجب أولاً إنشاء اتصال بوابة آمن بين خادم LDAP المحلي و IBM Cloud وفقًا للخطوات التالية:
تسجيل الدخول إلى IBM Cloud. انقر فوق
Catalog > All Categories > Integration > Secure Gateway > Create
داخل لوحة معلومات Secure Gateway Service ، انقر فوق Add Gateway . حدد اسمًا وانقر فوق Add Gateway . انقر فوق أيقونة البوابة التي أضفتها للتو.
انقر فوق Add Clients . اترك الاختيار الافتراضي IBM Installer كما هو. لاحظ أسفل Gateway ID Security Token .
انسخ عنوان URL للتنزيل لتثبيت عميل Gateway الآمن لنظام التشغيل حيث يتم تشغيل خادم LDAP.
قم بتسجيل الدخول إلى الجهاز المحلي حيث يعمل خادم LDAP. قم بتنزيل مثبت عميل Gateway Secure باستخدام عنوان URL للتنزيل الذي تم الحصول عليه من لوحة معلومات Gateway Secure. قم بتثبيت وبدء عمل عميل Gateway الآمن باستخدام التعليمات المتاحة هنا.
أضف خادم LDAP كوجهة في عميل Gateway الآمن باستخدام التعليمات المتوفرة هنا. إذا كانت الوجهة المضافة حديثًا تُظهر يد مرتفعة باللون الأحمر مع Access blocked by ACL ، فتأكد من تشغيل acl allow < host >:< port > في سطر أوامر Comple Client Secure Gateway.
hostname:port of LDAP Server. 

$ git clone https://github.com/IBM/MFP-Auth-LDAP
$ cd MFP-Auth-LDAP
تحديث IonicMobileApp/config.xml على النحو التالي. تغيير id ، name ، description وتفاصيل author بشكل مناسب.
<?xml version='1.0' encoding='utf-8'?>
<widget id="org.mycity.myward" version="2.0.0" xmlns="https://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:mfp="http://www.ibm.com/mobilefirst/cordova-plugin-mfp">
<name>MyWard</name>
<description>Get your civic issues resolved by posting through this app.</description>
<author email="[email protected]" href="https://developer.ibm.com/code/author/shivahr/">Shiva Kumar H R</author>
...
Open MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml وتحديث الخصائص التالية للإشارة إلى قاعدة بيانات Cloudant التي تم إنشاؤها في الخطوة 2.
key وكلمة password باستخدام مفتاح API Cloudant كما تم إنشاؤه في الخطوة 2.2.account خاصية ، حدد جزء URL لوحة معلومات Cloudant حتى (بما في ذلك) -bluemix.cloudant.com كما هو موضح في لقطة الخطوة 2.2.DBName ، اترك القيمة الافتراضية لـ myward -As-IS.
<mfp:adapter name="MyWardData" ...>
<property name="account" displayName="Cloudant account" defaultValue=""/>
<property name="key" displayName="Cloudant key" defaultValue=""/>
<property name="password" displayName="Cloudant password" defaultValue=""/>
<property name="DBName" displayName="Cloudant DB name" defaultValue="myward"/>
...
</mfp:adapter>
Open MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml وتحديث الخصائص التالية للإشارة إلى تخزين الكائن السحابي الذي تم إنشاؤه في الخطوة 3.
bucketName كما تم إنشاؤها في الخطوة 3.1.serviceId و apiKey الذي تم إنشاؤه في الخطوة 3.2.endpointURL وفقًا للمواصفات في https://cloud.ibm.com/docs/services/cloud-object-storage/basics/endpoints.html#select-degions-ing-depoints.
<mfp:adapter name="MyWardData" ...>
...
<property name="endpointURL" displayName="Cloud Object Storage Endpoint Public URL" defaultValue="https://s3-api.us-geo.objectstorage.softlayer.net"/>
<property name="bucketName" displayName="Cloud Object Storage Bucket Name" defaultValue=""/>
<property name="serviceId" displayName="Cloud Object Storage Service ID" defaultValue="" />
<property name="apiKey" displayName="Cloud Object Storage API Key" defaultValue=""/>
</mfp:adapter>
Open MobileFoundationAdapters/LDAPLoginAdapter/src/main/adapter-resources/adapter.xml وتحديث الخصائص التالية للإشارة إلى عميل البوابة الآمن الذي تم إنشاؤه في الخطوة 5.2
<property name="ldapUserAttribute" defaultValue="uid" displayName="The LDAP attribute for username"/>
<property name="ldapNameAttribute" defaultValue="cn" displayName="The LDAP attribute for display name"/>
<property name="ldapURL" defaultValue="ldap://caplonsgprd-5.integration.ibmcloud.com:15315" displayName="The LDAP Server URL"/>
<property name="userFilter" defaultValue="(&(uid=%v))" displayName="The LDAP user filter, use %v as placeholder for user"/>
<property name="bindDN" defaultValue="uid=admin,ou=system" displayName="The LDAP bind DN (- for none)"/>
<property name="bindPassword" defaultValue="apacheds" displayName="The LDAP bind password (- for none)" type="string"/>
Open MobileFoundationAdapters/SocialLoginAdapter/src/main/adapter-resources/adapter.xml وتحديث معرف عميل Google الذي تم إنشاؤه في الخطوة 6 كما هو موضح أدناه
<property name="google.clientId"
defaultValue="618106571370-nie902ccc0i3id6sgdu4nc58bslabcde.apps.googleusercontent.com"
displayName="google client Id"
description="OAuth 2.0 client ID that was created for your server. Get it from Google Developers Console
at https://console.developers.google.com/projectselector/apis/credentials"/>
قم بتثبيت المكون الإضافي Cordova و Ionic Facebook والمكون الإضافي GooglePlus باستخدام الأوامر التالية (Python2 هو شرط مسبق)
$ ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="your_appid_from_step6" --variable APP_NAME="your application name"
$ npm install --save @ionic-native/facebook
$ ionic cordova plugin add cordova-plugin-googleplus --variable REVERSED_CLIENT_ID="reverseclientid_from_step6"
$ npm install --save @ionic-native/google-plus
بعد تثبيت مكونات Facebook و GooglePlus ، تحقق مما إذا كان معرف تطبيق Facebook و Google WebClientId تم الحصول عليهما في الخطوة 6 موجودة في ملف config.xml كما هو موضح أدناه
<plugin name="cordova-plugin-facebook4" spec="^1.9.1">
<variable name="APP_ID" value="your_appid" />
<variable name="APP_NAME" value="MyWard" />
</plugin>
<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
<variable name="REVERSED_CLIENT_ID" value="your_reverse_clientid" />
</plugin>
REVERSED_CLIENT_ID هو النموذج العكسي لـ Google WebClientId الذي تم الحصول عليه في Step6.
قم أيضًا بإضافة WebClientId في ملف auth_handler.ts في طريقة GooglePlusLogin ().
بناء ونشر محول MyWardData على النحو التالي.
$ cd MobileFoundationAdapters/
$ cd MyWardData
$ mfpdev adapter build
$ mfpdev adapter deploy
ملاحظة- إذا لم يكن الخادم خادمًا افتراضيًا ، فيرجى ذكر اسم خادم "الأمر MFPDEV Adipter" في الأمر.
بناء ونشر محول LDAPLoginAdapter على النحو التالي.
$ cd ../LDAPLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
بناء ونشر محول SocialLoginAdapter على النحو التالي.
$ cd ../SocialLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
إطلاق لوحة معلومات MobileFoundation على النحو التالي:
Cloud Foundry Services ، انقر على خدمة Mobile Foundation التي قمت بإنشائها في الخطوة 4. ستحصل صفحة نظرة عامة على الخدمة التي يتم عرضها ، على لوحة معلومات MobileFoundation المدمجة داخلها. يمكنك أيضًا فتح لوحة معلومات MobileFoundation في علامة تبويب متصفح منفصلة عن طريق إلحاق /mfpconsole بعنوان URL المذكور في الخطوة 4.LDAPLoginAdapter و SocialLoginAdapter و MyWardData .تحقق من تكوين محول MobileFoundation على النحو التالي:
MyWardData . ضمن علامة تبويب Configurations ، يجب أن ترى الخصائص المختلفة التي حددناها في الخطوة 7.3 والخطوة 7.4 للوصول إلى قاعدة بيانات Cloudant وتخزين كائن السحابة كما هو موضح أدناه. كبديل لتحديد قيم الخصائص هذه في MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml كما هو موضح سابقًا في الخطوة 7.3 والخطوة 7.4 ، يمكنك نشر المحولات ذات defaultValue الفارغة ، وبمجرد نشر المحول ، تغيير القيم في هذه الصفحة. 
Resources . يجب أن ترى مختلف واجهات برمجة تطبيقات REST المكشوفة بواسطة محول MyWardData كما هو موضح أدناه. يجب أن يوضح عمود Security نطاق الحماية UserLogin مقابل كل طريقة راحة. 


اتبع الإرشادات الواردة في الخطوة 7 من المشروع الأساسي لتشغيل التطبيق على هاتف Android. بدلاً من استخدام مستخدم عادي ، اختبر زر تسجيل الدخول إلى Google أو زر تسجيل الدخول إلى FB أو زر LDAPLOGIN. المستند إلى الزر المختار ، ستختلف آلية التحقق من مصادقة المستخدم.

يظهر أسفل لقطة الشاشة الصفحات المختلفة للتطبيق.



يرجى الاطلاع على إرشادات تصحيح تطبيق Android Hybrid باستخدام أدوات مطور Chrome أو دليل استكشاف الأخطاء وإصلاحها لحلول بعض المشكلات الشائعة.
Apache 2.0