사용자 인증은 거의 모든 엔터프라이즈 모바일 앱의 기본 요구 사항입니다. 급여, 휴가 및 비즈니스 여행 예약과 관련된 내부 모바일 앱의 경우, 조직은 온 프레미스 LDAP 서버에 대해 사용자를 인증하여 단일 서명을 활용하려고합니다. 또한 엔터프라이즈 데이터가 노출되지 않은 최종 사용자를 대상으로하는 앱의 경우 서비스 요청을 높일 수있는 제품 사용자를위한 앱을 사용하여 Facebook 로그인/Google 로그인과 같은 소셜 로그인을 사용하여 사용자를 인증 할 수 있습니다. 이 코드 패턴은 개발자가 IBM Mobile Foundation 서비스를 활용하여 다음 사용자 인증 메커니즘을 구현할 수있는 방법을 보여줍니다.
이 코드 패턴을 완료하면 다음을 이해할 수 있습니다.

위의 다이어그램은 로그인 흐름을 보여줍니다 (여기서는 Google에서 설명하지만 Facebook 또는 기타 소셜 제공자와 관련이 있음). 다이어그램은 소셜 제공자에게 전화를 걸기위한 방아쇠가 고객이 시작 함을 보여줍니다.

1. Ionic 및 MobileFoundation CLI 설정
2. Cloudant 데이터베이스를 만들고 샘플 데이터로 채우십시오.
3. IBM Cloud Object Storage Service를 만들고 샘플 데이터로 채우십시오.
4. 모바일 재단 서비스를 만들고 MFP CLI를 구성하십시오
5. LDAP 서버 설정 및 보안 게이트웨이 클라이언트를 설정하십시오
6. 소셜 로그인을 위해 Google 및 Facebook과 함께 Android 앱 등록
7. 소스 리포를 다운로드하고 사용자 정의하십시오
7.1 복제 레포
7.2 업데이트 앱 ID, 이름 및 설명
7.3 MobileFoundation 어댑터에서 Cloudant 자격 증명을 지정하십시오
7.4 MobileFoundation 어댑터에서 클라우드 객체 저장 자격 증명을 지정하십시오
7.5 MobileFoundation 어댑터에서 LDAP 자격 증명을 지정하십시오
7.6 Moilefoundation 어댑터에서 Google 로그인 자격 증명을 지정하십시오
7.7 Ionic 앱에서 Facebook Appid 및 Google ClientId를 지정하십시오.
8. MobileFoundation 어댑터를 배포하고 테스트하십시오
8.1 MobileFoundation 어댑터를 빌드 및 배포하십시오
8.2 MobileFoundation 대시 보드를 시작하고 어댑터 구성을 확인하십시오
9. 안드로이드 폰에서 응용 프로그램을 실행하십시오
이 프로젝트는 https://github.com/ibm/ionic-mfp-app 위에 있습니다. 기본 프로젝트에서 IBM Cloud에서 필요한 모바일 백엔드 서비스를 제공하고 샘플 데이터로 채우고 개발 시스템에서 Ionic 및 MobileFoundation CLI를 설정하기 위해 다음 단계를 수행하십시오.
1 단계. 이온 및 모바일 회전 CLI 설정
2 단계. Cloudant 데이터베이스 생성 및 샘플 데이터로 채우십시오.
3 단계. IBM Cloud Object Storage Service를 만들고 샘플 데이터로 채우십시오.
4 단계. 모바일 재단 서비스 생성 및 모바일 회의 CLI 구성
Enterprise LDAP 서버 설정 및 실행이있는 경우이 섹션의 나머지 부분을 건너 뛰고 'Seet Secure Gateway Client'섹션으로 이동할 수 있습니다. LDAP 서버 설정이없는 경우 apacheds (https://directory.apache.org/apacheds)를 설치 해보십시오. Apacheds의 기본 설치 및 설정 안내서는 -https://directory.apache.org/apacheds/basic-user-guide.html에서 제공됩니다 (섹션 1 참조). 여기서 단계를 수행하여 여기에서 사용 가능한 샘플 데이터를 가져옵니다. 예를 들어 세부 정보와 함께 새 항목 추가
IBM Cloud에서 실행되는 Mobile Foundation 서버 내에서 온 프레미스 LDAP 서버에 액세스하려면 먼저 다음 단계에 따라 온 프레미스 LDAP 서버와 IBM 클라우드간에 안전한 게이트웨이 연결을 작성해야합니다.
IBM Cloud에 로그온하십시오. 클릭하십시오
Catalog > All Categories > Integration > Secure Gateway > Create
Secure Gateway Service Dashboard 내에서 Add Gateway 클릭하십시오. 이름을 지정하고 Add Gateway 클릭하십시오. 방금 추가 한 게이트웨이의 아이콘을 클릭하십시오.
Add Clients 클릭하십시오. IBM Installer 의 기본 선택을 as-입니다. Gateway ID 및 Security Token 기록하십시오.
LDAP 서버가 실행중인 OS의 Secure Gateway 클라이언트 설치 프로그램에 대한 다운로드 URL을 복사하십시오.
LDAP 서버가 실행중인 온 프레미스 컴퓨터에 로그온하십시오. Secure Gateway Dashboard에서 얻은 다운로드 URL을 사용하여 Secure Gateway 클라이언트 설치 프로그램을 다운로드하십시오. 여기에서 사용 가능한 지침을 사용하여 보안 게이트웨이 클라이언트를 설치하고 시작하십시오.
여기에서 사용 가능한 지침을 사용하여 Secure Gateway 클라이언트의 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>
...
Open MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml 열고 2 단계에서 생성 된 Cloudant 데이터베이스를 가리 키도록 다음 속성을 업데이트하십시오.
key 와 password 업데이트하십시오.account 의 경우 2.2 단계의 스냅 샷에 표시된대로 Cloudant Dashboard URL 부분을 -Bluemix.cloudant.com 으로 지정하십시오.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"/>
Open 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 플러그인 및 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 플러그인이 설치된 후 6 단계에서 얻은 Facebook 앱 ID 및 Google WebClientId가 아래와 같이 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 STEP6에서 얻은 Google WebClientID의 역 양식입니다.
또한 GooglePlusLogin () 메소드의 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
다음과 같이 MobileFoundation 대시 보드를 시작하십시오.
Cloud Foundry Services 의 IBM Cloud Dashboard에서 4 단계에서 만든 Mobile Foundation 서비스를 클릭하십시오. 표시되는 서비스 개요 페이지에는 MobileFoundation Dashboard가 포함됩니다. 4 단계에서 언급 된 URL 에 /mfpconsole 추가하여 별도의 브라우저 탭에서 MobileFoundation 대시 보드를 열 수도 있습니다.LDAPLoginAdapter , SocialLoginAdapter 및 MyWardData 어댑터가 표시됩니다.다음과 같이 MobileFoundation 어댑터 구성을 확인하십시오.
MyWardData 어댑터를 클릭하십시오. Configurations 탭에는 아래와 같이 Cloudant 데이터베이스 및 클라우드 객체 저장에 액세스하기 위해 7.3 및 단계 7.4에서 지정한 다양한 속성이 표시됩니다. MobileFoundationAdapters/MyWardData/src/main/adapter-resources/adapter.xml 7.3 및 단계 7.4에서 이전에 표시된대로 해당 속성 값을 지정하는 대안으로, 빈 DefaultValue가 빈 defaultValue 으로 어댑터를 배치 할 수 있으며 어댑터가 배포되면이 페이지에서 값을 변경할 수 있습니다. 
Resources 탭을 클릭하십시오. 아래 그림과 같이 MyWardData 어댑터에 의해 노출 된 다양한 REST API가 표시됩니다. Security 열은 각각의 휴식 방법에 대한 보호 범위 UserLogin 보여 주어야합니다. 


기본 프로젝트 7 단계의 지침에 따라 Android 폰에서 응용 프로그램을 실행하십시오. 평범한 사용자 리그 인 대신 Google 로그인 버튼 또는 FB 로그인 버튼 또는 ldaplogin 버튼을 테스트합니다. 선택한 버튼을 기반으로 사용자 인증 유효성 검사 메커니즘은 다릅니다.

아래 스크린 샷은 응용 프로그램의 다른 페이지를 보여줍니다.



Chrome Developer 도구를 사용하여 Android 하이브리드 앱을 디버깅하거나 일반적으로 발생하는 일부 문제에 대한 솔루션을위한 문제 해결 안내서를 참조하십시오.
아파치 2.0