앱 브랜드화
IBM Cloud® App ID를 사용하면 고유 브랜드 화면을 통해 애플리케이션의 전체 가입 환경을 사용자 정의할 수 있습니다. 제공된 로그인 위젯을 나만의 로그인 위젯으로 바꾸고, 필드를 더 추가하고, 비밀번호 강도를 확인하고, 차단 목록에 대해 이메일 주소를 확인할 수 있습니다!
화면 재사용에 대한 정보
기존 UI를 재사용하는 경우 앱에 대한 일관성 있는 사인인 플로우를 작성할 수 있습니다. 동일한 이미지, 색상 및 브랜드를 사용하면 사용자가 앱과 직접 상호작용하지 않는 경우에도 더 쉽게 브랜드를 인식할 수 있습니다.
영어 이외의 언어를 사용하시겠습니까? 언어 관리 API를 사용하여 다른 언어를 선택하여 직접 번역한 콘텐츠를 표시할 수 있습니다.
사인인 또는 가입 화면에서 어떤 정보를 얻어야 합니까?
사인인 양식을 제출하도록 요청할 때 요청 본문에는 사용자 이름과 비밀번호 매개변수가 모두 포함되어야 합니다. 로그인 또는 가입 페이지에서 사용자의 정보를 요청해야 합니다.
일부는 고유 화면을 사용하고 일부는 기본 화면을 사용할 수 있습니까?
예. 일부 화면 및 일부 기본 화면을 사용하는 하이브리드 플로우를 작성할 수 있습니다. 하지만 플로우당 하나의 옵션만 사용할 수 있습니다. 예를 들어 고유한 사인인 화면을 사용하면서 기본 등록 화면을 사용할 수 있습니다. 하지만 기본 등록 화면을 사용하도록 선택하는 경우 등록 검증을 포함한 전체 등록 플로우에서 계속 기본값을 사용해야 합니다.
기술적으로 이 플로우가 어떻게 다릅니까?
이 서비스는 OAuth 2.0 권한 플로우를 사용하여 권한 부여 프로세스를 맵핑합니다. Facebook과 같은 소셜 ID 공급자를 구성할 때 권한 부여 흐름은 로그인 위젯을 호출하는 데 사용됩니다. 자체 화면을 사용하는 경우 리소스 소유자 비밀번호 자격 증명 흐름은 화면을 호출하는 데 사용할 수 있는 액세스 및 ID 토큰을 제공하는 데 사용됩니다.
Android SDK로 앱 브랜드화
Cloud Directory를 사용하면 Android SDK로 사용자 정의된 화면을 호출할 수 있습니다. 사용자가 상호 작용할 수 있는 화면의 조합을 선택할 수 있습니다.
로그인
-
콘솔에서 클라우드 디렉터리 설정을 구성합니다.
-
애플리케이션에 다음 코드를 추가하십시오. 사용자가 사용자 정의 화면에서 사인인을 클릭하면 사인인 플로우가 트리거됩니다. 사용자의 사용자 이름 및 비밀번호를 제공하여 액세스, ID 및 새로 고치기 토큰을 받을 수 있습니다.
AppID.getInstance().signinWithResourceOwnerPassword(getApplicationContext(), username, password, new TokenResponseListener() { @Override public void onAuthorizationFailure (AuthorizationException exception) { //Exception occurred } @Override public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) { //User authenticated } });
iOS Swift SDK로 앱 브랜드화
클라우드 디렉토리를 활성화하면 iOS Swift SDK를 사용하여 나만의 브랜드 화면을 호출할 수 있습니다.
로그인
-
콘솔에서 클라우드 디렉터리 설정을 구성합니다.
-
애플리케이션에 다음 코드를 배치하십시오. 사용자가 사인인하려고 시도하면 사용자 정의 화면이 호출되고 사용자 정의된 사인인 페이지를 통해 권한 부여 및 인증 프로세스가 시작됩니다.
class delegate : TokenResponseDelegate { public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, response:Response?) { //User authenticated } public func onAuthorizationFailure(error: AuthorizationError) { //Exception occurred } } AppID.sharedInstance.signinWithResourceOwnerPassword(username: username, password: password, delegate: delegate())
Node.js SDK로 앱 브랜드화
Cloud Directory가 사용되는 경우에는 Node.js SDK로 사용자 정의된 화면을 호출할 수 있습니다.
로그인
사용자는 WebAppStrategy을(를) 통해 사용자 이름 및 비밀번호를 사용하여 웹 앱에 로그인할 수 있습니다. 사용자가 앱에 로그인하면 액세스 토큰이 활성 상태로 유지되는 한 HTTP 세션에서 지속됩니다. HTTP 세션이 닫히거나 만료되면 액세스 토큰도 영구 삭제됩니다.
-
콘솔에서 클라우드 디렉터리 설정을 구성합니다.
-
애플리케이션에 다음 코드를 배치하십시오. 사용자가 사인인하려고 시도하면 사용자 정의 화면이 호출되고 권한 부여 및 인증 프로세스가 시작됩니다.
app.post("/form/submit", bodyParser.urlencoded({extended: false}), passport.authenticate(WebAppStrategy.STRATEGY_NAME, { successRedirect: LANDING_PAGE_URL, failureRedirect: ROP_LOGIN_PAGE_URL, failureFlash : true // allow flash messages }));로그인 매개변수 매개변수 설명 successRedirect인증에 성공한 후 사용자를 경로 재지정할 URL입니다. failureRedirect인증에 실패하는 경우 사용자를 경로 재지정할 URL입니다. 다음 인증 실패가 발생하면 사용자가 지정된 URL로 경로 재지정됩니다.
- 사용자가 올바르지 않은 사용자 이름 또는 비밀번호를 입력합니다.
- App ID 인스턴스의 플랜 한계에 도달했습니다.
failureFlashtrue(으)로 설정되면 Cloud Directory 서비스에서 오류 메시지가 리턴됩니다. 기본적으로 이 값은false(으)로 설정됩니다.실제로 작동하는 모습을 보려면 웹 앱 샘플을 확인하세요.
API로 앱 브랜드화
사용자 정의된 화면을 표시하고 App ID의 인증 및 권한 부여 기능을 활용할 수 있습니다. Cloud Directory를 ID 제공자로 사용하면 사용자는 도움을 받지 않고 앱과 상호 작용할 수 있습니다. 사용자는 도움을 요청하지 않고도 사인인, 등록 및 자체 비밀번호 재설정 등을 수행할 수 있습니다.
이러한 경험이 가능하도록 App ID은(는) REST API를 노출합니다. REST API를 사용하여 웹 앱을 서비스하는 백엔드 서버를 빌드하거나 고유한 사용자 정의 화면을 통해 모바일 앱과 상호작용할 수 있습니다.
관리 API의 경우 IBM Cloud Identity and Access Management에서 생성된 토큰을 통해 보안이 적용되며, 이는 계정 소유자가 해당 팀에서 어떤 사용자가 각각의 서비스 인스턴스에 대해 어떤 레벨의 액세스 권한을 보유하는지 지정할 수 있음을 의미합니다. IAM 및 App ID가 함께 작동되는 방법에 대한 자세한 정보는 서비스 액세스 관리를 참조하십시오.
설정을 구성한 후에는 다음 엔드포인트를 호출하여 각각의 화면을 표시할 수 있습니다.
가입
/sign_up 엔드포인트를 사용하여 사용자가 직접 앱에 등록하도록 허용할 수 있습니다. 요청 본문에서 다음 데이터를 제공하십시오.
- tenantID.
- 다음 필수 속성을 가진 Cloud Directory 사용자 데이터. 자세한 내용은 SCIM 전체 사용자 표현을 참조하세요.
password속성.emails로 설정된primary속성과 하나 이상의 이메일 주소가 있는true배열.
이메일 구성에 따라 사용자가 검증 요청을 수신하거나, 앱에 등록 시 환영하는 이메일을 수신하거나, 또는 둘 다 수신할 수 있습니다. 두 가지 유형의 이메일 모두 사용자가 앱에 등록할 때 트리거됩니다. 검증 이메일에는 사용자가 해당 ID를 확인하기 위해 클릭할 수 있는 링크가 포함되어 있으며, 검증을 수행한 것에 감사하거나 검증이 완료되었음을 확인하는 화면이 표시됩니다.
고유한 사후 검증 페이지를 표시하려면 다음 작업을 수행하십시오.
- App ID 대시보드에서 Cloud Directory ID 제공자로 이동하십시오.
- 이메일 검증 탭을 클릭하십시오.
- 사용자 정의 검증 페이지 URL에 랜딩 페이지의 URL을 입력하십시오.
이 값이 제공된 경우, App ID는 context 조회와 함께 URL을 호출합니다. /sign_up/confirmation_result 엔드포인트를 호출하고 수신된 context 매개변수를 전달하면 결과에서 사용자가 자체 계정을 확인했는지 여부를 알려줍니다. 해당되는 경우에는 사용자 정의 페이지를 표시할 수 있습니다.
비밀번호 찾기
/forgot_password 엔드포인트를 사용하면 사용자가 자체 비밀번호를 잊은 경우에 이를 복구하도록 허용할 수 있습니다.
요청 본문에서 다음 데이터를 제공하십시오.
- tenantID.
- Cloud Directory 사용자의 이메일.
엔드포인트가 호출된 경우에는 비밀번호 재설정 이메일이 사용자에게 발송됩니다. 이메일에는 재설정 단추가 포함되어 있습니다. 단추를 누르면 App ID에 비밀번호를 재설정할 수 있는 화면이 표시됩니다.
사후 비밀번호 재설정 페이지를 제시할 수 있습니다.
- 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 켜기로 설정해야 합니다.
- 서비스 대시보드의 비밀번호 재설정 탭에서 비밀번호 찾기 이메일이 켜기로 설정되어 있는지 확인하십시오.
- 사용자 정의 재설정 비밀번호 페이지의 URL에 랜딩 페이지의 URL을 입력하십시오.
이 값이 제공된 경우, App ID는 context 조회와 함께 URL을 호출합니다. context 매개변수를 사용하면 /forgot_password/confirmation_result가 호출될 때 결과를 수신할 수 있습니다. 결과가 성공적이면 사용자 정의 페이지를 표시할 수 있습니다.
랜덤 문자열을 사용자 정의 비밀번호 재설정 페이지에 추가하고 요청이 제출되면 이를 백엔드에 전달하십시오. 핸들러가 문자열을 유효성 검증하도록 하고, 유효한 경우에만 /change_password 엔드포인트를 호출하십시오. 이를 수행하면 백엔드 비밀번호 재설정 엔드포인트의 취약성을 낮출 수 있습니다.
비밀번호 변경
/change_password 엔드포인트는 두 가지 방법으로 사용할 수 있습니다. 사용자가 재설정 요청을 제출하는 경우 또는 사용자가 앱에 사인인한 상태에서 비밀번호를 업데이트하려는 경우입니다.
/change_password API를 호출하여 사용자가 비밀번호를 재설정할 수 있도록 하기 전에 context 엔드포인트를 사용하여 /forgot_password/confirmation_result에 성공적인 결과가 있는지 확인하는 것이 좋습니다. 이 작업은 백엔드 비밀번호 재설정 프로세스의 보안 수준을 강화하고 context가 여전히
유효한 경우에만 사용자가 비밀번호를 수정할 수 있도록 합니다.
재설정 요청 후 사용자 비밀번호를 업데이트하려면 요청 본문에서 다음 데이터를 제공하십시오.
- tenantID.
- 사용자의 새 비밀번호.
- Cloud Directory 사용자의 UUID.
- 선택사항: 비밀번호 재설정이 수행된 IP 주소. IP 주소 전달을 선택한 경우에는 비밀번호 변경 이메일 템플리트에 대해
%{passwordChangeInfo.ipAddress}플레이스홀더가 사용 가능합니다.
구성에 따라 비밀번호가 변경될 때 App ID에서 사용자에게 변경사항이 작성되었음을 통지하는 이메일을 발송할 수 있습니다.
앱에 사인인한 상태에서 사용자가 비밀번호를 변경할 수 있도록 허용하려면 요청 본문에서 다음 데이터를 제공하십시오.
- tenantID.
- 사용자의 새 비밀번호.
- Cloud Directory 사용자의 UUID.
비밀번호 변경 페이지가 사용자에게 현재 비밀번호와 새 비밀번호를 입력하도록 프롬프트를 표시해야 합니다.
백엔드는 ROP API로 사용자의 현재 비밀번호를 유효성 검증하며, 유효한 경우에는 새 비밀번호를 사용하여 엔드포인트를 호출합니다. 구성에 따라서는 비밀번호가 변경될 때 App ID에 변경사항이 있었음을 알려주는 이메일을 사용자에게 발송할 수 있습니다.
재발송
사용자가 어떤 이유로 이메일을 받지 못한 경우 /resend/<templateName> 을 사용하여 이메일을 다시 보낼 수 있습니다.
요청 본문에서 다음 데이터를 제공하십시오.
- 테넌트 ID입니다.
- 템플리트 이름.
- Cloud Directory 사용자의 UUID.
세부사항 변경
사용자가 앱에 사인인한 경우에는 일부 자체 정보를 업데이트할 수 있습니다. /Users/<userID> 에서 정보를 얻고 업데이트할 수 있습니다.
사용자 세부 정보가 업데이트되면 엔드포인트는 요청 본문에서 업데이트된 사용자 데이터를 SCIM 형식으로 가져옵니다. 반드시 관련 세부사항만 변경하십시오.
사용자의 이메일 주소는 변경할 수 없습니다.