Аутентификация пользователя является фундаментальным требованием практически во всех мобильных приложениях предприятия. Для внутренних мобильных приложений, таких как те, которые связаны с заработной платой, бронированием поездок и бизнес-поездок, организации хотят использовать однописание, подходящие пользователям по сравнению с локальным сервером LDAP. А для приложений, предназначенных для конечных пользователей, где корпоративные данные не раскрыты, например, приложение для пользователей продуктов, которое позволяет им поднимать запросы на обслуживание, что позволяет пользователям аутентифицировать использование своего социального входа в систему, например, вход в систему Facebook/Google, будет намного проще. Этот шаблон кода показывает, как разработчики могут использовать услуги IBM Mobile Foundation для реализации следующих механизмов аутентификации пользователей:
Когда вы закончите этот шаблон кода, вы поймете:

Приведенная выше диаграмма иллюстрирует поток входа в систему (здесь описано с Google, но также имеет отношение к Facebook или другим социальным провайдерам). Диаграмма показывает, что клиент инициируется триггером для вызова социальных провайдеров.

1. Установка ионной и мобильной области CLI
2. Создайте облачную базу данных и заполните ее образцом данных
3. Создайте службу хранения облачных объектов IBM и заполните ее образцами данных
4. Создайте сервис мобильного фундамента и настройте MFP CLI
5. Настройка сервера LDAP и клиента Secure Gateway
6. Зарегистрируйте приложение Android в Google и Facebook для социального входа в систему
7. Скачать источник репо и настраивать
7.1 Clone Repo
7.2 Обновить идентификатор приложения, имя и описание
7.3 Укажите облачные учетные данные в адаптере мобильной установки
7.4 Укажите учетные данные хранения облачных объектов в адаптере мобильной установки
7.5 Укажите учетные данные LDAP в адаптере MobileFoundation
7.6. Укажите учетные данные в заре входа в Google в адаптере на проживание
7.7 Укажите Facebook Appid и Google ClientId в приложении Ionic
8. развернуть мобильные адаптеры и тестирование
8.1 Создание и развертывание мобильных адаптеров
8.2 Запустите мониторинг мобильных устройств и проверьте конфигурации адаптера
9. Запустите приложение на телефоне Android
Этот проект строится на вершине https://github.com/ibm/ionic-mfp-app. Запустите следующие шаги от этого базового проекта, чтобы предоставить необходимые сервисы мобильных бэкэнд от IBM Cloud и заполнить их образцами данных, а также для настройки ионного и мобильного и мобильного CLI на вашей машине разработки.
Шаг 1. Настройка Ionic и MobileFoundation CLI
Шаг 2. Создайте облачную базу данных и заполните ее образцами данных
Шаг 3. Создайте службу хранения облачных объектов IBM и заполните его образцами данных
Шаг 4. Создайте сервис мобильного фундамента и настройте CLI MobileFoundation
Если у вас есть настройка сервера LDAP Enterprise LDAP, вы можете пропустить оставшуюся часть этого раздела и перейти на раздел «Настройка клиента Secure Gateway». Если у вас нет настройки сервера 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
Внутри безопасной панель службы шлюза нажмите Add Gateway . Укажите имя и нажмите Add Gateway . Нажмите на значок для шлюза, который вы только что добавили.
Нажмите Add Clients . Оставьте выбор по умолчанию IBM Installer As-I's. Обратите внимание на Gateway ID и Security Token .
Скопируйте URL -адрес загрузки для установщика Secure Gateway Client для ОС, где работает сервер LDAP.
Войдите в локальную машину, где работает сервер LDAP. Загрузите установщик Secure Gateway Client, используя URL -адрес загрузки, полученный из Dash Wareway Dashboard. Установите и запустите клиент Secure Gateway, используя инструкции, доступные здесь.
Добавьте сервер LDAP в качестве пункта назначения в клиенте Secure Gateway, используя инструкции, доступные здесь. Если недавно добавленный пункт назначения показывает приподнятую руку в красном цвете с информационным Access blocked by ACL , убедитесь, что вы запустили acl allow < host >:< port > в командной строке безопасного шлюза.
hostname:port сервера LDAP. 

$ 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>
...
Откройте MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml и обновите следующие свойства, чтобы указывать на облачную базу данных, созданную на шаге 2.
key и password с помощью Cloudant API -ключа, сгенерированного на шаге 2.2.account свойства укажите облачную порцию URL -адреса инструментальной панели до (и включая) -bluemix.cloudant.com, как показано на снимке шага 2.2.DBName оставьте значение по умолчанию myward As-I's.
<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>
Откройте MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml и обновите следующие свойства, чтобы указывать на хранилище объекта облачных объектов, созданное на шаге 3.
bucketName , как создано на шаге 3.1.serviceId и apiKey созданные на шаге 3.2.endpointURL в соответствии с спецификацией в https://cloud.ibm.com/docs/services/cloud-buse-storage/basics/endpoints.html#select-ragions-and-endpoints.
<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>
Откройте 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, полученной на шаге 6.
Также добавьте WebClientID в файл auth_handler.ts в методе GooglePlusLogin ().
Создайте и разверните адаптер MyWardData , как показано ниже.
$ cd MobileFoundationAdapters/
$ cd MyWardData
$ mfpdev adapter build
$ mfpdev adapter deploy
Примечание. Если сервер не является по умолчанию, пожалуйста, упомяните имя сервера «Команда развертывания адаптера MFPDEV» в команде.
Создайте и разверните адаптер LDAPLoginAdapter как показано ниже.
$ cd ../LDAPLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Создайте и разверните адаптер SocialLoginAdapter , как показано ниже.
$ cd ../SocialLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Запустите мониторную панель мобильных устройств, как ниже:
Cloud Foundry Services , нажмите на службу Mobile Foundation которую вы создали на шаге 4. На странице обзора услуг, которая будет отображаться, будет встроена панель мобильной связи. Вы также можете открыть панель мобильных устройств на отдельной вкладке браузера, добавив /mfpconsole к URL, упомянутому на шаге 4.LDAPLoginAdapter , SocialLoginAdapter и MyWardData .Проверьте конфигурацию адаптера MobileFoundation, как ниже:
MyWardData . На вкладке Configurations вы должны увидеть различные свойства, которые мы указали на шаге 7.3 и шаге 7.4 для доступа к облачной базе данных и хранилищам облачных объектов, как показано ниже. В качестве альтернативы определению этих значений свойств в MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml как ранее показано на шаге 7.3 и шаге 7.4, вы можете развернуть адаптеры с пустым defaultValue , и после того, как адаптер развернут, изменить значения на этой странице. 
Resources . Вы должны увидеть различные API, выявленные адаптером MyWardData , как показано ниже. Столбец Security должен показывать защиту Scope UserLogin от каждого метода отдыха. 


Следуйте инструкциям на шаге 7 базового проекта, чтобы запустить приложение на телефоне Android. Вместо простого пользователя, протестируйте кнопку входа Google или кнопку входа FB или кнопку Ldaplogin. На выбранной кнопке механизм проверки аутентификации пользователя будет варьироваться.

Ниже скриншот показывают различные страницы приложения.



Пожалуйста, смотрите инструкции по отладке Android Hybrid App с использованием инструментов разработчика Chrome или руководства по устранению неисправностей для решений некоторых часто встречающихся проблем.
Apache 2.0