A autenticação do usuário é um requisito fundamental em quase todos os aplicativos móveis corporativos. Para aplicativos móveis internos, como aqueles relacionados à folha de pagamento, licença e reserva de viagens de negócios, as organizações desejam aproveitar o sinal único, autenticando os usuários contra seu servidor LDAP no local. E para aplicativos direcionados para usuários finais, onde os dados corporativos não estão expostos, como um aplicativo para usuários de produtos que lhes permitem aumentar as solicitações de serviço, permitindo que os usuários se autentiquem usando seu login social, como login do Facebook/Login do Google, seria muito mais fácil. Esse padrão de código mostra como os desenvolvedores podem aproveitar o serviço IBM Mobile Foundation para implementar os seguintes mecanismos de autenticação do usuário:
Quando você concluir este padrão de código, você entenderá:

O diagrama acima ilustra o fluxo de login (aqui descrito no Google, mas também relevante para o Facebook ou outros provedores sociais). O diagrama mostra que o gatilho para ligar para os provedores sociais é iniciado pelo cliente.

1. CLI Ionic e MobileFoundation
2. Crie banco de dados Cloudant e preencha -o com dados de amostra
3. Crie serviço de armazenamento de objetos em nuvem IBM e preencha -o com dados de amostra
4. Crie serviço de fundação móvel e configure a MFP CLI
5. Configurar servidor LDAP e cliente de gateway seguro
6. Registre o aplicativo Android no Google e Facebook para login social
7. Faça o download do repo -fonte e personalize
7.1 Clone Repo
7.2 Atualizar ID do aplicativo, nome e descrição
7.3 Especifique as credenciais do Cloudante no adaptador de Fundação Mobile
7.4 Especifique as credenciais de armazenamento de objetos em nuvem no adaptador de fundação móvel
7.5 Especifique as credenciais LDAP no adaptador MobileFoundation
7.6 Especifique credenciais de inscrição do Google no adaptador de moilfoundação
7.7 Especifique o Facebook Appid e o Google ClientID no aplicativo iônico
8. Implante os adaptadores e teste de Fundação Mobile
8.1 Construa e implante os adaptadores de Foundation
8.2 Iniciar o painel do MobileFoundation e verificar configurações de adaptador
9. Execute a inscrição no telefone Android
Este projeto se baseia no topo de https://github.com/ibm/ionic-mfp-app. Execute as seguintes etapas desse projeto básico para provisionar os serviços de back -end móvel necessários da IBM Cloud e preenchê -los com dados de amostra, bem como para configurar a CLI da Ionic e da MobileFoundation em sua máquina de desenvolvimento.
Etapa 1. CLI Ionic e MobileFoundation
Etapa 2. Crie banco de dados Cloudant e preencha -o com dados de amostra
Etapa 3. Crie serviço de armazenamento de objetos em nuvem IBM e preencha -o com dados de amostra
Etapa 4. Crie serviço de fundação móvel e configure o CLI do MobileFoundation
Se você tiver sua configuração e execução do Enterprise LDAP Server, poderá pular o restante desta seção e passar para 'Configurar a seção Secure Gateway Client'. Se você não tiver nenhuma configuração do servidor LDAP, tente instalar o Apacheds - https://directory.apache.org/apacheds. O guia básico de instalação e instalação para apacheds está disponível em-https://directory.apache.org/apacheds/basic-user-guide.html (consulte a seção 1). Importar os dados de amostra disponíveis aqui seguindo as etapas aqui. Adicione uma nova entrada com seus detalhes, por exemplo,
Para poder acessar seu servidor LDAP no local dentro do servidor de fundação móvel em execução no IBM Cloud, devemos primeiro criar uma conexão de gateway segura entre o servidor LDAP no local e o IBM Cloud conforme as seguintes etapas:
Faça logon no IBM Cloud. Clique em
Catalog > All Categories > Integration > Secure Gateway > Create
Dentro do painel de serviço de gateway seguro, clique em Add Gateway . Especifique um nome e clique em Add Gateway . Clique no ícone para o gateway que você acabou de adicionar.
Clique em Add Clients . Deixe a seleção padrão do IBM Installer AS-IS. Anote o Gateway ID e Security Token .
Copie o URL de download para o instalador do cliente seguro Gateway para o sistema operacional onde o servidor LDAP está em execução.
Faça logon na máquina local onde o servidor LDAP está em execução. Faça o download do instalador do cliente seguro do gateway usando o URL de download obtido no painel de gateway seguro. Instale e inicie o cliente seguro do gateway usando as instruções disponíveis aqui.
Adicione o servidor LDAP como um destino no cliente de gateway seguro usando as instruções disponíveis aqui. Se o destino recém-adicionado mostrar uma mão elevada na cor vermelha com Access blocked by ACL , verifique se você executou acl allow < host >:< port > na linha de comando do cliente de gateway seguro.
hostname:port of LDAP Server. 

$ git clone https://github.com/IBM/MFP-Auth-LDAP
$ cd MFP-Auth-LDAP
Atualize IonicMobileApp/config.xml como abaixo. Alterar id , name , description e detalhes author adequadamente.
<?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 e atualize as seguintes propriedades para apontar para o banco de dados do Cloudant criado na etapa 2.
key e password com a chave da API Cloudant, conforme gerado na Etapa 2.2.account da propriedade, especifique a parte da URL do painel Cloudant até (e incluindo) -bluemix.cloudant.com, como mostrado no instantâneo da etapa 2.2.DBName , deixe o valor padrão de 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 e atualize as seguintes propriedades para apontar para o armazenamento de objetos em nuvem criado na etapa 3.
bucketName , como criado na etapa 3.1.serviceId e apiKey criados na Etapa 3.2.endpointURL de acordo com a especificação em 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>
Open MobileFoundationAdapters/LDAPLoginAdapter/src/main/adapter-resources/adapter.xml e atualize as seguintes propriedades para apontar para o cliente de gateway seguro criado na etapa 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 e atualize o Google Client-ID criado na Etapa 6, como mostrado abaixo
<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 o plug-in Cordova e Ionic Facebook e GooglePlus usando os seguintes comandos (Python2 é um pré-requisito)
$ 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
Depois que os plug -ins do Facebook e GooglePlus estão instalados, verifique se o ID do aplicativo do Facebook e o Google WebClientId obtidos na Etapa 6 estão presentes no arquivo config.xml, como mostrado abaixo
<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>
O REVERSED_CLIENT_ID é a forma reversa do Google WebClientId obtida na etapa6.
Adicione também o webclientId no arquivo auth_handler.ts no método GooglePlusLogin ().
Construa e implante o adaptador MyWardData como abaixo.
$ cd MobileFoundationAdapters/
$ cd MyWardData
$ mfpdev adapter build
$ mfpdev adapter deploy
Nota- Se o servidor não for padrão, mencione o nome do servidor 'Comando de implantação do adaptador MFPDEV' no comando.
Crie e implante o adaptador LDAPLoginAdapter como abaixo.
$ cd ../LDAPLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Crie e implante o adaptador SocialLoginAdapter como abaixo.
$ cd ../SocialLoginAdapter/
$ mfpdev adapter build
$ mfpdev adapter deploy
Inicie o painel do MobileFoundation como abaixo:
Cloud Foundry Services , clique no serviço Mobile Foundation que você criou na Etapa 4. A página Visão geral do serviço que é mostrada, terá o painel MobileFoundation incorporado nele. Você também pode abrir o painel do MobileFoundation em uma guia do navegador separada, anexando /mfpconsole ao URL mencionado na etapa 4.LDAPLoginAdapter , SocialLoginAdapter e MyWardData listados.Verifique a configuração do adaptador do MobileFoundation como abaixo:
MyWardData . Na guia Configurations , você deve ver as várias propriedades especificadas na Etapa 7.3 e na Etapa 7.4 para acessar o banco de dados do Cloudant e o armazenamento de objetos em nuvem, como mostrado abaixo. Como alternativa para especificar esses valores de propriedades em MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml como mostrado anteriormente na etapa 7.3 e na etapa 7.4, você pode implantar os adaptadores com defaultValue vazia e, uma vez que o adaptador é implantado, alterações sobre isso. 
Resources . Você deve ver as várias APIs de REST expostas pelo adaptador MyWardData , como mostrado abaixo. A coluna Security deve mostrar o escopo de proteção contra UserLogin contra cada método de repouso. 


Siga as instruções na etapa 7 do projeto básico para executar o aplicativo no telefone Android. Em vez de um userLogin simples, teste o botão de login do Google ou o botão de login do FB ou o botão LDAPlogin. Com base no botão escolhido, o mecanismo de validação de autenticação do usuário variará.

Abaixo, a captura de tela mostra as diferentes páginas do aplicativo.



Consulte as instruções para depurar o aplicativo Android Hybrid usando ferramentas de desenvolvedor do Chrome ou guia de solução de problemas para obter soluções para alguns problemas que ocorrem em comum.
Apache 2.0