La autenticación del usuario es un requisito fundamental en casi todas las aplicaciones móviles empresariales. Para aplicaciones móviles internas, como las relacionadas con la nómina, la reserva de viajes de licencia y negocios, las organizaciones desean aprovechar una sola señalización autenticando a los usuarios contra su servidor LDAP local. Y para las aplicaciones dirigidas a los usuarios finales donde los datos empresariales no están expuestos, como, una aplicación para los usuarios de productos que les permite aumentar las solicitudes de servicio, lo que permite a los usuarios autenticarse utilizando su inicio de sesión social, como el inicio de sesión de Facebook/el inicio de sesión de Google, sería mucho más fácil. Este patrón de código muestra cómo los desarrolladores pueden aprovechar el servicio de IBM Mobile Foundation para implementar los siguientes mecanismos de autenticación de usuarios:
Cuando haya completado este patrón de código, comprenderá:

El diagrama anterior ilustra el flujo de inicio de sesión (aquí descrito con Google pero también relevante para Facebook u otros proveedores sociales). El diagrama muestra que el Cliente inicia el desencadenante de llamar a los proveedores sociales.

1. Configurar la CLI iónica y móvil de Foundation
2. Cree una base de datos de nube y pública con datos de muestra
3. Cree el servicio de almacenamiento de objetos en la nube de IBM y lo llene con datos de muestra
4. Crear servicio de base móvil y configurar MFP CLI
5. Configurar el servidor LDAP y el cliente de Gateway Secure
6. Registre la aplicación Android con Google y Facebook para el inicio de sesión social
7. Descargue el repositorio de origen y personalice
7.1 Repo clon
7.2 Actualizar la identificación de la aplicación, nombre y descripción
7.3 Especifique las credenciales de nube en el adaptador de MobileFoundation
7.4 Especificar credenciales de almacenamiento de objetos en la nube en el adaptador de foundación móvil
7.5 Especifique las credenciales de LDAP en el adaptador MobileFoundation
7.6 Especifique las credenciales de inicio de sesión de Google en el adaptador MoileFoundation
7.7 Especifique la aplicación de Facebook y Google Clientid en la aplicación Ionic
8. Implemente los adaptadores y pruebas de MobileFoundation
8.1 Construir e implementar los adaptadores de MobileFoundation
8.2 Inicie el tablero de foundation mobile y verifique las configuraciones del adaptador
9. Ejecute la aplicación en el teléfono Android
Este proyecto se basa en https://github.com/ibm/ionic-mfp-app. Ejecute los siguientes pasos de ese proyecto base para aprovisionar los servicios de back -end móviles necesarios de IBM Cloud y llenarlos con datos de muestra, así como para configurar la CLI Ionic y MobileFoundation en su máquina de desarrollo.
Paso 1. Configurar CLI iónico y móvil Foundation
Paso 2. Cree una base de datos Cloudant y llénela con datos de muestra
Paso 3. Cree el servicio de almacenamiento de objetos en la nube de IBM y llénelo con datos de muestra
Paso 4. Cree el servicio de Foundation Mobile y configure MobileFoundation CLI
Si tiene su servidor LDAP Enterprise configurado y en ejecución, puede omitir el resto de esta sección y moverse a la sección 'Configurar el cliente de Gateway Secure Gateway'. Si no tiene ninguna configuración del servidor LDAP, puede intentar instalar Apacheds - https://directory.apache.org/apacheds. La guía básica de instalación y configuración para Apacheds está disponible en-https://directory.apache.org/apacheds/basic-user-guide.html (consulte la sección 1). Importe los datos de muestra disponibles aquí siguiendo los pasos aquí. Agregue una nueva entrada con sus datos, por ejemplo,
Para poder acceder a su servidor LDAP local desde el servidor de Foundation Mobile que se ejecuta en IBM Cloud, primero debemos crear una conexión de puerta de enlace segura entre el servidor LDAP local e IBM Cloud según los siguientes pasos:
Inicie sesión en IBM Cloud. Hacer clic en
Catalog > All Categories > Integration > Secure Gateway > Create
Dentro del tablero de servicio Secure Gateway, haga clic en Add Gateway . Especifique un nombre y haga clic en Add Gateway . Haga clic en el icono de la puerta de enlace que acaba de agregar.
Haga clic en Add Clients . Deje la selección predeterminada del IBM Installer AS-IS. Observe la Gateway ID y Security Token .
Copie la URL de descarga para el instalador del cliente Secure Gateway para el sistema operativo donde se está ejecutando el servidor LDAP.
Inicie sesión en la máquina local donde se esté ejecutando el servidor LDAP. Descargue el instalador del cliente Secure Gateway utilizando la URL de descarga obtenida del tablero de puerta de enlace seguro. Instale e inicie el cliente de Gateway Secure utilizando instrucciones disponibles aquí.
Agregue el servidor LDAP como destino en el cliente Secure Gateway utilizando las instrucciones disponibles aquí. Si el destino recién agregado muestra una mano elevada en color rojo con Access blocked by ACL , asegúrese de haber ejecutado acl allow < host >:< port > en la línea de comandos del cliente de Gateway Secure.
hostname:port del servidor LDAP. 

$ git clone https://github.com/IBM/MFP-Auth-LDAP
$ cd MFP-Auth-LDAP
Actualice IonicMobileApp/config.xml como se muestra a continuación. Cambiar id , name , description y datos author adecuadamente.
<?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>
...
Abra MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml y actualice las siguientes propiedades para apuntar a la base de datos Cloudant creada en el Paso 2.
key y password con la tecla API Cloudant como se genera en el paso 2.2.account de propiedades, especifique la porción de URL del tablero de nubes hasta (e incluyendo) -bluemix.cloudant.com como se muestra en la instantánea del paso 2.2.DBName , deje el valor predeterminado de myward my-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>
Abra MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml y actualice las siguientes propiedades para apuntar al almacenamiento de objetos en la nube creado en el paso 3.
bucketName como se creó en el paso 3.1.serviceId y apiKey creado en el paso 3.2.endpointURL según la especificación en https://cloud.ibm.com/docs/services/cloud-object-storage/basics/endpoints.html#select-regions-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>
Abra MobileFoundationAdapters/LDAPLoginAdapter/src/main/adapter-resources/adapter.xml y actualice las siguientes propiedades para apuntar al cliente de Gateway seguro creado en el Paso 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"/>
Abra MobileFoundationAdapters/SocialLoginAdapter/src/main/adapter-resources/adapter.xml y actualice el ID de cliente de Google creado en el paso 6 como se muestra a continuación
<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"/>
Instale el complemento Cordova e Ionic Facebook y el complemento GooglePlus utilizando los siguientes comandos (Python2 es un requisito previo)
$ 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
Después de instalar los complementos de Facebook y GooglePlus, verifique si la ID de aplicación de Facebook y Google WebClientid obtenidos en el Paso 6 están presentes en el archivo config.xml como se muestra a continuación
<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>
El REVERSED_CLIENT_ID es la forma inversa de Google WebClientid obtenida en el paso 6.
También agregue el WebClientID en el archivo Auth_handler.ts en el método GooglePlusLogin ().
Construya e implementa el adaptador MyWardData como se muestra a continuación.
$ cd MobileFoundationAdapters/
$ cd MyWardData
$ mfpdev adapter build
$ mfpdev adapter deploy
Nota: si el servidor no es predeterminado, mencione el nombre del servidor 'MFPDEV Adaptador de implementación comando' en el comando.
Construya e implementa el adaptador LDAPLoginAdapter como se muestra a continuación.
$ cd ../LDAPLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Construya e implementa el adaptador SocialLoginAdapter como se muestra a continuación.
$ cd ../SocialLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Inicie el tablero de foundation de MobileFoundation como se muestra a continuación:
Cloud Foundry Services , haga clic en el servicio Mobile Foundation que creó en el Paso 4. La página Descripción general del servicio que se muestra, tendrá el tablero MobileFoundation integrado dentro de él. También puede abrir el tablero de foundation mobile en una pestaña de navegador separada agregando /mfpconsole a la URL mencionada en el paso 4.LDAPLoginAdapter , SocialLoginAdapter y MyWardData Adapters enumerados.Verifique la configuración del adaptador MobileFoundation como se muestra a continuación:
MyWardData . En la pestaña Configurations , debe ver las diversas propiedades que especificamos en el Paso 7.3 y el Paso 7.4 para acceder a la base de datos nublado y al almacenamiento de objetos en la nube como se muestra a continuación. Como alternativa a especificar esos valores de propiedad en MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml Como se muestra previamente en el paso 7.3 y el paso 7.4, puede implementar los adaptadores con defaultValue , y una vez que se despliega el adaptador, cambie los valores en esta página. 
Resources . Debería ver las diversas API REST expuestas por el adaptador MyWardData como se muestra a continuación. La columna Security debe mostrar el alcance de protección UserLogin en cada método de descanso. 


Siga las instrucciones en el paso 7 del proyecto base para ejecutar la aplicación en el teléfono Android. En lugar de un UserLogin simple, pruebe el botón de inicio de sesión de Google o el botón de inicio de sesión FB o el botón Ldaplogin. Con el botón elegido, el mecanismo de validación de autenticación del usuario variará.

A continuación, la captura de pantalla muestra las diferentes páginas de la aplicación.



Consulte las instrucciones para depurar la aplicación Hybrid Android utilizando herramientas de desarrollador de Chrome o la Guía de solución de problemas para soluciones a algunos problemas que ocurren.
Apache 2.0