用戶身份驗證是幾乎所有企業移動應用程序中的基本要求。對於內部移動應用程序,例如與薪水,休假和商務旅行預訂有關的應用程序,組織希望通過對用戶對其本地LDAP服務器進行身份驗證來利用單個簽名。對於針對最終用戶的應用程序,企業數據未公開,例如,適用於產品用戶的應用程序,允許他們提高服務請求,從而允許用戶使用其社交登錄名來驗證,例如Facebook登錄/Google登錄將變得容易得多。此代碼模式顯示了開發人員如何利用IBM移動基礎服務來實施以下用戶身份驗證機制:
完成此代碼模式後,您將了解:

上圖說明了登錄流量(此處使用Google描述,但也與Facebook或其他社會提供商有關)。該圖顯示,觸發社會提供者是由客戶啟動的。

1。設置離子和移動配置CLI
2。創建Cloudant數據庫並用示例數據填充它
3。創建IBM雲對象存儲服務並用示例數據填充它
4。創建移動基礎服務和配置MFP CLI
5。設置LDAP服務器和安全網關客戶端
6.在Google和Facebook上註冊Android應用以進行社交登錄
7。下載源存儲庫和自定義
7.1克隆回購
7.2更新應用程序ID,名稱和說明
7.3在移動配置適配器中指定Cloudant憑據
7.4在移動文件適配器中指定雲對象存儲憑據
7.5在移動文件適配器中指定LDAP憑據
7.6在MoileFoundation適配器中指定Google登錄憑據
7.7在Ionic應用中指定Facebook Appid和Google ClientId
8。部署移動配置適配器和測試
8.1構建和部署移動文件適配器
8.2啟動移動配置儀表板並驗證適配器配置
9。在Android手機上運行申請
該項目建立在https://github.com/ibm/ionic-mfp-app上。從該基礎項目中運行以下步驟,以便從IBM Cloud提供所需的移動後端服務,並用示例數據填充它們,並在開發機上設置離子和移動配置CLI。
步驟1。設置離子和移動配置CLI
步驟2。創建Cloudant數據庫並用示例數據填充它
步驟3。創建IBM雲對象存儲服務並用示例數據填充它
步驟4。創建移動基礎服務並配置移動配置CLI
如果您擁有企業LDAP服務器設置並運行,則可以跳過本節的其餘部分,然後移至“設置安全網關客戶端”部分。如果您沒有任何LDAP服務器設置,則可以嘗試安裝Apacheds -https://directory.apache.org/apacheds。 Apacheds的基本安裝和設置指南可在-https://directory.apache.org/apacheds/basic-user-guide.html(請參閱第1節)。通過以下步驟在此處導入示例數據。添加一個新的條目,其中包括您的詳細信息,例如
為了能夠從IBM Cloud上運行的移動基礎服務器中訪問本地LDAP服務器,我們必須首先根據以下步驟在本地LDAP服務器和IBM Cloud之間創建安全的網關連接:
登錄到IBM雲。點擊
Catalog > All Categories > Integration > Secure Gateway > Create
在安全網關服務儀表板內,單擊Add Gateway 。指定名稱,然後單擊Add Gateway 。單擊剛剛添加的網關圖標。
單擊Add Clients 。留下IBM Installer AS-IS的默認選擇。記下Gateway ID和Security Token 。
複製為安全網關客戶端安裝程序的下載URL,以適用於LDAP服務器正在運行的操作系統。
登錄到LDAP服務器正在運行的本地計算機。使用從安全網關儀表板獲得的下載URL下載安全網關客戶端安裝程序。通過使用可用的說明來安裝並啟動安全網關客戶端。
使用此處可用的說明添加LDAP服務器作為安全網關客戶端中的目標。如果新添加的目的地顯示了一隻紅色的凸起的手,其中包含Access blocked by ACL ,請確保在安全網關客戶端命令行中運行acl allow < host >:< port > 。
hostname:port 。 

$ 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中創建的Cloudant數據庫。
key和password 。account ,請指定Cloudant儀表板URL部分,直至(和包括) -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的值。serviceId和apiKey 。endpointURL 。
<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"/>
打開MobileFoundationAdapters/SocialLoginAdapter/src/main/adapter-resources/adapter.xml並更新步驟6中創建的Google客戶端ID,如下所示
<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插件和Google Plus插件(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和Google Plus插件後,請檢查config.xml文件中是否存在在步驟6中獲得的Facebook應用程序ID和Google WebClientID,如下所示
<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是STEP6中獲得的Google WebClientID的反向形式。
還將在Google Pluslogin()方法中的Auth_handler.ts文件中添加WebClientID。
如下,構建和部署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下,單擊您在步驟4中創建的Mobile Foundation服務。顯示的服務概述頁面將嵌入其中的Mobile Foundation儀表板。您還可以通過將/mfpconsole附加到步驟4中提到的URL中,在單獨的瀏覽器選項卡中打開移動文件儀表板。LDAPLoginAdapter , SocialLoginAdapter和MyWardData適配器。驗證移動文件適配器配置如下:
MyWardData適配器。在Configurations卡下,您應該看到我們在步驟7.3中指定的各種屬性和步驟7.4,用於訪問Cloudant數據庫和雲對象存儲,如下所示。作為在MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml中指定這些屬性值的替代方案,如步驟7.3和步驟7.4所示,您可以用空defaultValue部署適配器,一旦將適配器的值部署到本頁面上,則可以在此頁面上更改貼度。 
Resources選項卡。您應該看到MyWardData適配器暴露的各種REST API,如下所示。 Security列應顯示針對每種REST方法的保護範圍UserLogin 。 


按照基本項目的步驟7中的說明在Android手機上運行該應用程序。代替普通的UserLogin,請測試Google登錄按鈕或FB登錄按鈕或LDAPLOGIN按鈕。基於選擇的按鈕,用戶身份驗證驗證機制將有所不同。

下面的屏幕快照顯示了應用程序的不同頁面。



請參閱使用Chrome Developer工具或故障排除指南來調試Android Hybrid應用的說明,以解決某些常見問題的解決方案。
Apache 2.0