Die Benutzerauthentifizierung ist eine grundlegende Anforderung in fast allen mobilen Apps für Unternehmen. Für interne mobile Apps wie diejenigen, die sich auf die Buchung von Lohn- und Gehaltsabrechnungen, Urlaub und Geschäftsreisen beziehen, möchten Organisationen, indem sie Benutzer mit dem On-Premise-LDAP-Server authentifizieren. Und für Apps, die an Endbenutzer abgestimmt sind, bei denen Unternehmensdaten nicht aufgedeckt werden, z. Dieses Codemuster zeigt, wie Entwickler den IBM Mobile Foundation -Service nutzen können, um die folgenden Benutzerauthentifizierungsmechanismen zu implementieren:
Wenn Sie dieses Codemuster abgeschlossen haben, werden Sie verstehen:

Das obige Diagramm veranschaulicht den Anmeldefluss (hier bei Google beschrieben, aber auch für Facebook oder andere soziale Anbieter relevant). Das Diagramm zeigt, dass der Auslöser, soziale Anbieter aufzurufen, vom Kunden initiiert wird.

1. Setup Ionic and MobileFoundation CLI
2. Erstellen Sie Cloudant -Datenbank und füllen Sie sie mit Beispieldaten ein
3. Erstellen Sie IBM Cloud -Objektspeicherdienst und füllen Sie ihn mit Beispieldaten aus
4. Erstellen Sie den Mobilfoundation -Service und konfigurieren Sie MFP CLI
5. Setup LDAP -Server und sichere Gateway -Client einrichten
6. Registrieren Sie die Android -App bei Google und Facebook für soziale Anmeldung
7. Quellenrepo herunterladen und anpassen
7.1 Klonrepo
7.2 App -ID, Name und Beschreibung aktualisieren
7.3 Geben Sie Cloudant -Anmeldeinformationen im MobileFoundation -Adapter an
7.4 Geben Sie Cloud -Objektspeicher -Anmeldeinformationen im MobileFoundation -Adapter an
7.5 Geben Sie LDAP -Anmeldeinformationen im Mobilfoundation -Adapter an
7.6 Geben Sie Google Anmeldeinformationen im Moilefoundation-Adapter an
7.7 Geben Sie die Facebook Appid und Google ClientID in der ionischen App an
8. Bereitstellen Sie die Mobilfoundation -Adapter ein und testen Sie
8.1 Erstellen und Bereitstellen der Mobilfunk -Adapter
8.2 MobileFoundation Dashboard starten und Adapterkonfigurationen überprüfen
9. Führen Sie die Bewerbung auf Android -Telefon aus
Dieses Projekt baut auf https://github.com/ibm/ionic-mfp-app auf. Führen Sie die folgenden Schritte aus diesem Basisprojekt aus, um die erforderlichen mobilen Backend -Dienste von IBM Cloud bereitzustellen und sie mit Beispieldaten zu füllen sowie die Ionic- und Mobilfoundation -CLI auf Ihrem Entwicklungsgerät einzurichten.
Schritt 1. Setup Ionic and MobileFoundation CLI
Schritt 2. Cloudant -Datenbank erstellen und mit Beispieldaten bevölkern
Schritt 3. Erstellen Sie IBM Cloud -Objektspeicherdienst und füllen Sie ihn mit Beispieldaten aus
Schritt 4. Erstellen Sie den Mobilfoundation -Service und konfigurieren
Wenn Sie Ihr Enterprise LDAP -Server -Setup und ausgeführt haben, können Sie den Rest dieses Abschnitts überspringen und in den Abschnitt "Setup Secure Gateway Client" wechseln. Wenn Sie kein LDAP -Server -Setup haben, können Sie versuchen, Apacheds zu installieren - https://directory.apache.org/apacheds. Die Grundlagen- und Setup-Handbuch für Apacheds finden Sie unter-https://directory.apache.org/apacheds/basic-user-guide.html (siehe Abschnitt 1). Importieren Sie die hier verfügbaren Beispieldaten, indem Sie hier Schritte folgen. Fügen Sie zum Beispiel einen neuen Eintrag mit Ihren Details hinzu,
Um auf den auf IBM Cloud ausgeführten mobilen Foundation-Server auf Ihren On-Premise-LDAP-Server zugreifen zu können, müssen wir zunächst eine sichere Gateway-Verbindung zwischen dem lokalen LDAP-Server und der IBM-Cloud gemäß den folgenden Schritten herstellen:
Melden Sie sich bei IBM Cloud an. Klicken Sie auf
Catalog > All Categories > Integration > Secure Gateway > Create
Klicken Sie im Secure Gateway Service Dashboard Add Gateway . Geben Sie einen Namen an und klicken Sie auf Add Gateway . Klicken Sie auf das Symbol für das gerade hinzugefügte Gateway.
Klicken Sie auf Add Clients . Lassen Sie die Standardauswahl von IBM Installer As-is. Beachten Sie die Gateway ID und Security Token .
Kopieren Sie die Download -URL für das Secure Gateway -Client -Installateur für das Betriebssystem, auf dem der LDAP -Server ausgeführt wird.
Melden Sie sich bei der On-Premise-Maschine an, auf der der LDAP-Server ausgeführt wird. Laden Sie das Secure Gateway Client -Installationsprogramm mit der von Secure Gateway Dashboard erhaltenen Download -URL herunter. Installieren und starten Sie den sicheren Gateway -Client mithilfe von Anweisungen, die hier verfügbar sind.
Fügen Sie den LDAP -Server als Ziel im sicheren Gateway -Client mit den hier verfügbaren Anweisungen hinzu. Wenn das neu hinzugefügte Ziel eine erhöhte Hand in roter Farbe mit Access blocked by ACL zeigt, stellen Sie sicher, dass Sie acl allow < host >:< port > In der Befehlszeile des sicheren Gateway-Clients.
hostname:port of LDAP -Server angeben. 

$ git clone https://github.com/IBM/MFP-Auth-LDAP
$ cd MFP-Auth-LDAP
Aktualisieren Sie IonicMobileApp/config.xml wie unten. Ändern Sie id , name , description und author angemessen.
<?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>
...
Öffnen Sie MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml und aktualisieren Sie die folgenden Eigenschaften, um auf die in Schritt 2 erstellte Cloudant-Datenbank zu verweisen.
key und password mit der Cloudant -API -Taste wie in Schritt 2.2 generiert.account den Cloudant Dashboard -URL -Anteil bis (und einschließlich) -Bluemix.cloudant.com an, wie im Snapshot von Schritt 2.2 gezeigt.myward As-is für Eigentum DBName .
<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>
Öffnen Sie MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml und aktualisieren Sie die folgenden Eigenschaften, um auf den in Schritt 3 erstellten Cloud-Objektspeicher zu verweisen.
bucketName an, wie in Schritt 3.1 erstellt.serviceId und apiKey an, die in Schritt 3.2 erstellt wurden.endpointURL nach der Spezifikation unter https://cloud.ibm.com/docs/services/cloud-objekt-storage/basics/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>
Öffnen Sie MobileFoundationAdapters/LDAPLoginAdapter/src/main/adapter-resources/adapter.xml und aktualisieren Sie die folgenden Eigenschaften, um auf den in Schritt 5.2 erstellten sicheren Gateway-Client zu verweisen
<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"/>
Öffnen Sie MobileFoundationAdapters/SocialLoginAdapter/src/main/adapter-resources/adapter.xml und aktualisieren Sie die in Schritt 6 erstellte Google-Client-ID wie unten gezeigt
<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"/>
Installieren Sie das Cordova- und Ionic Facebook-Plugin und das Googleplus-Plugin mit folgenden Befehlen (Python2 ist eine Voraussetzung)
$ 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
Nachdem die Plugins von Facebook und GooglePlus installiert wurden
<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>
Die REVERSED_CLIENT_ID ist die umgekehrte Form des in Schritt6 erhaltenen Google WebClientid.
Fügen Sie auch die WebClientID in der Datei authat_handler.ts in der methode googlePluslogin () hinzu.
Erstellen und setzen Sie MyWardData -Adapter wie unten ein und setzen Sie sie ein.
$ cd MobileFoundationAdapters/
$ cd MyWardData
$ mfpdev adapter build
$ mfpdev adapter deploy
Hinweis: Wenn der Server keine Standardeinstellung ist, erwähnen Sie bitte den Befehl Server "MFPDEV Adapter Deploy" im Befehl.
Erstellen und bereitstellen Sie LDAPLoginAdapter -Adapter wie unten.
$ cd ../LDAPLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Erstellen und setzen Sie den SocialLoginAdapter -Adapter wie unten auf.
$ cd ../SocialLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Starten Sie MobileFoundation Dashboard wie unten:
Cloud Foundry Services auf den in Schritt 4 erstellten Mobile Foundation -Service. Auf der angezeigten Serviceübersichtsseite wird das MobileFoundation -Dashboard in sich eingebettet. Sie können das MobileFoundation -Dashboard auch auf einer separaten Registerkarte Browser öffnen, indem Sie an die in Schritt 4 genannte URL /mfpconsole .LDAPLoginAdapter , SocialLoginAdapter und MyWardData -Adapter.Überprüfen Sie die Konfiguration von Mobilfoundation Adapter wie unten:
MyWardData -Adapter. Auf der Registerkarte Configurations " sollten Sie die verschiedenen Eigenschaften sehen, die wir in Schritt 7.3 und Schritt 7.4 für den Zugriff auf Cloudant -Datenbank- und Cloud -Objektspeicher wie unten angegeben angegeben haben. Als Alternative zur Angabe dieser Eigenschaftswerte in MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml Wie zuvor in Schritt 7.3 und Schritt 7.4 gezeigt, können Sie die Adapter mit leerem defaultValue bereitstellen und die Werte auf diesem Seite eingesetzt werden. 
Resources . Sie sollten die verschiedenen REST -APIs sehen, die von MyWardData Adapter aufgedeckt wurden, wie unten gezeigt. Die Security sollte den Schutz des SCOPE UserLogin gegen jede REST -Methode anzeigen. 


Befolgen Sie die Anweisungen in Schritt 7 des Basisprojekts, um die Anwendung auf Android -Telefon auszuführen. Testen Sie anstelle eines einfachen UserLogin die Schaltfläche Google Anmeld oder FB-Anmeldung oder die Schaltfläche LDAPLOGIN.basiert auf der ausgewählten Taste, der Mechanismus zur Validierungsmechanismus der Benutzerauthentifizierung variiert.

Nachfolgend zeigt Screenshot die verschiedenen Seiten der Anwendung.



Anweisungen zum Debuggen von Android Hybrid App unter Verwendung von Chrome -Entwickler -Tools oder Fehlerbehebungshandbuch für Lösungen für einige häufig auftretende Probleme.
Apache 2.0