로그인 위젯 사용

IBM Cloud® App ID를 사용할 경우 로그인 위젯이라는 기본 UI를 통해 애플리케이션 사용자가 사인인할 때 사용할 ID 제공자를 선택할 수 있습니다. 클라우드 디렉토리를 사용하는 경우 로그인 위젯은 가입, 비밀번호 분실, 다단계 인증 등과 같은 기능을 위한 추가 UI도 제공합니다.

로그인 위젯에 대한 정보

로그인 위젯의 가장 뛰어난 부분 중 하나는 사용자가 자체 인증 UI를 구현하기 전에 App ID를 사용할 수 있다는 점입니다. 따라서 개발자의 온보딩 환경이 훨씬 쉬워집니다.

기본 로그인 위젯 동작은 무엇입니까?

기본적으로 로그인 위젯에서는 Facebook, Google 및 Cloud Directory를 사용할 수 있습니다. 구성하려는 ID 제공자를 옵션으로 선택하여 언제든지 동작을 변경할 수 있습니다. 둘 이상의 ID 제공자가 사용으로 설정된 경우 로그인 위젯은 사용자가 자신의 ID 제공자를 선택할 수 있는 화면을 표시합니다. 그러나 하나의 제공자가 사용으로 설정된 경우 앞에서 언급한 선택 화면이 표시되지 않습니다. ID 제공자로 직접 이동되어 로그인 프로세스가 시작됩니다.

예를 들어 기본값(Facebook, Google, Cloud Directory)을 사용 중인 경우 사용자에게 화면이 표시됩니다. Facebook만 사용으로 설정할 경우 인증을 위해 Facebook으로 직접 이동됩니다.

각각의 제공자에 대해 표시할 수 있는 화면은 무엇입니까?

Cloud Directory를 사용할 경우, App ID는 사용자 관리의 확장 기능을 제공할 수 있습니다. 확장 기능은 또한 로그인 위젯의 기능에도 적용됩니다. Cloud Directory에 저장된 사용자는 로그인 위젯에서 직접 등록 또는 비밀번호 재설정 등의 기능을 활용할 수 있습니다. 각 유형의 ID 제공자에 대해 표시할 수 있는 화면을 보려면 다음의 표를 체크아웃하십시오.

각 ID 공급업체가 표시할 수 있는 로그인 위젯 화면은 다음과 같습니다
로그인 위젯 화면 소셜 ID 제공자 엔터프라이즈 ID 제공자 Cloud Directory
로그인 체크표시 아이콘 체크표시 아이콘 체크표시 아이콘
가입 체크표시 아이콘
비밀번호 찾기 체크표시 아이콘
비밀번호 변경 체크표시 아이콘
계정 세부사항 체크표시 아이콘

SSO 로그인 플로우 사용자 정의

성공적으로 인증하고 나면 App ID가 앱에서 인증에 사용할 수 있는 암호화된 액세스 및 ID 토큰을 사용하여 세션 쿠키를 작성합니다. 플로우를 사용자 정의하는 또 다른 방법은 브라우저 앱이 AJAX 요청에서 토큰을 사용할 수 있도록 브라우저에 액세스 토큰을 보내는 것입니다.

로그인 위젯 사용자 정의

로그인 위젯은 동적입니다. 룩앤필 또는 ID 제공자 구성을 사용자 정의할 수 있으며 변경사항은 즉시 적용됩니다. 애플리케이션 코드를 업데이트하거나 애플리케이션을 재배치하지 않아도 됩니다!

로그인 위젯이 제공하는 것보다 더 많은 사용자 정의가 필요합니까? 사용자 사인인, 등록, 비밀번호 재설정 및 기타 플로우에 대해 완전히 사용자 정의된 사용자 고유의 UI를 구현하여 자신의 앱에 고유한 환경을 만들 수 있습니다. 시작하려면 앱 브랜드화를 확인하십시오.

화면을 사용자 정의하려면 다음을 수행하십시오.

  1. App ID 서비스 대시보드를 여십시오.
  2. 로그인 사용자 정의 섹션을 선택하십시오. 회사의 브랜드에 맞추어 로그인 위젯의 모양을 수정할 수 있습니다.
  3. 로컬 시스템에서 PNG 또는 JPG 파일을 선택하여 회사의 로고를 업로드하십시오. 권장 이미지 크기는 320 x 320 픽셀입니다. 최대 파일 크기는 100Kb입니다.
  4. 색상 선택도구에서 위젯의 헤더 색상을 선택하거나, 16진 코드를 입력하여 그 외의 색상을 선택하십시오.
  5. 미리보기 분할창을 확인하고, 사용자 정의가 만족스러우면 변경사항 저장을 클릭하십시오. 확인 메시지가 표시됩니다.
  6. 브라우저에서 로그인 페이지를 새로 고쳐 변경사항을 확인하십시오.

Android SDK를 사용하여 로그인 위젯 표시

Android 클라이언트 SDK로 미리 구성된 화면을 호출할 수 있습니다.

코드에 다음 명령을 입력하십시오.

LoginWidget loginWidget = AppID.getInstance().getLoginWidget();
loginWidget.launch(this, new AuthorizationListener() {
      @Override
      public void onAuthorizationFailure (AuthorizationException exception) {
      //Exception occurred
      }

      @Override
      public void onAuthorizationCanceled () {
      //Authentication canceled by the user
      }

      @Override
      public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, refreshToken: RefreshToken) {
      //User authenticated
      }
   });

가입

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 앱에 다음 코드를 추가하십시오. 사용자 정의 화면에서 사용자가 앱에 가입하면 가입 플로우가 시작됩니다. 다음 호출은 사용자를 등록할 뿐만 아니라 Cloud Directory 구성에 따라 등록을 완료하기 위한 검증 이메일도 발송합니다.

    LoginWidget loginWidget = AppID.getInstance().getLoginWidget();
    loginWidget.launchSignUp(this, new AuthorizationListener() {
       @Override
       public void onAuthorizationFailure (AuthorizationException exception) {
             //Exception occurred
       }
    
       @Override
       public void onAuthorizationCanceled () {
             //Sign up canceled by the user
       }
    
       @Override
       public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) {
             if (accessToken != null && identityToken != null) {
                //User authenticated
             } else {
                //email verification is required
             }
       }
    });
    

비밀번호 찾기

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에서 해당 계정을 관리할 수 있도록 허용켜기로 설정해야 합니다.

  2. 서비스 대시보드의 비밀번호 재설정 탭에서 비밀번호 찾기 이메일켜기로 설정되어 있는지 확인하십시오.

  3. 앱에 다음 코드를 추가하십시오. 사용자가 애플리케이션에서 "비밀번호 찾기"를 클릭하면 SDK에서 비밀번호 찾기 API를 호출하여 사용자에게 비밀번호를 재설정할 수 있도록 해주는 이메일을 발송합니다.

    LoginWidget loginWidget = AppID.getInstance().getLoginWidget();
    loginWidget.launchForgotPassword(this, new AuthorizationListener() {
       @Override
       public void onAuthorizationFailure (AuthorizationException exception) {
             //Exception occurred
       }
    
       @Override
       public void onAuthorizationCanceled () {
             // Forogt password canceled by the user
       }
    
       @Override
       public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) {
             // Forgot password finished, in this case accessToken and identityToken will be null.
       }
    });
    

세부사항 변경

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 서비스 대시보드의 비밀번호 변경 탭에서 비밀번호 변경 이메일을 켜기로 설정하십시오.

  3. 로그인 위젯을 호출하여 세부사항 변경 플로우를 시작하십시오.

    LoginWidget loginWidget = AppID.getInstance().getLoginWidget();
    loginWidget.launchChangeDetails(this, new AuthorizationListener() {
       @Override
       public void onAuthorizationFailure (AuthorizationException exception) {
             // Exception occurred
       }
    
       @Override
       public void onAuthorizationCanceled () {
             // Changed details canceled by the user
       }
    
       @Override
       public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) {
             // User authenticated, and fresh tokens received
       }
    });
    

비밀번호 변경

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 앱에 다음 코드를 배치하여 비밀번호 변경 플로우를 시작하십시오.

    LoginWidget loginWidget = AppID.getInstance().getLoginWidget();
    loginWidget.launchChangePassword(this, new AuthorizationListener() {
       @Override
       public void onAuthorizationFailure (AuthorizationException exception) {
             // Exception occurred
       }
    
       @Override
       public void onAuthorizationCanceled () {
             // Change password canceled by the user
       }
    
       @Override
       public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) {
             // User authenticated, and fresh tokens received
       }
    });
    

iOS Swift SDK를 사용하여 로그인 위젯 표시

iOS Swift 클라이언트 SDK를 사용하여 미리 구성된 화면을 호출할 수 있습니다.

코드에 다음 명령을 입력하십시오.

import IBMCloudAppID
class delegate : AuthorizationDelegate {
   public func onAuthorizationSuccess(accessToken: AccessToken, identityToken: IdentityToken, refreshToken: RefreshToken?) {
         //User authenticated
   }

   public func onAuthorizationCanceled() {
         //Authentication canceled by the user
   }

   public func onAuthorizationFailure(error: AuthorizationError) {
         //Exception occurred
   }
}

AppID.sharedInstance.loginWidget?.launch(delegate: delegate())

가입

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 애플리케이션에 다음 코드를 배치하십시오. 사용자가 애플리케이션에 가입하려고 하면 로그인 위젯이 호출되고 사용자 정의 가입 페이지가 표시됩니다.

    class delegate : AuthorizationDelegate {
       public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response:Response?) {
          if accessToken == nil && identityToken == nil {
          //email verification is required
          return
          }
       //User authenticated
       }
    
       public func onAuthorizationCanceled() {
          //Sign up canceled by the user
       }
    
       public func onAuthorizationFailure(error: AuthorizationError) {
          //Exception occurred
       }
    }
    
    AppID.sharedInstance.loginWidget?.launchSignUp(delegate: delegate())
    

비밀번호 찾기

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에서 해당 계정을 관리할 수 있도록 허용켜기로 설정해야 합니다.

  2. 서비스 대시보드의 비밀번호 재설정 탭에서 비밀번호 찾기 이메일켜기로 설정되어 있는지 확인하십시오.

  3. 애플리케이션에 다음 코드를 배치하십시오. 앱 사용자 중 한 명이 비밀번호를 업데이트하도록 요청하면 로그인 위젯이 호출되고 프로세스가 시작됩니다.

    class delegate : AuthorizationDelegate {
       public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response:Response?) {
          //forgot password finished, in this case accessToken and identityToken will be null.
       }
    
       public func onAuthorizationCanceled() {
          //forgot password canceled by the user
       }
    
       public func onAuthorizationFailure(error: AuthorizationError) {
          //Exception occurred
       }
    }
    
    AppID.sharedInstance.loginWidget?.launchForgotPassword(delegate: delegate())
    

세부사항 변경

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 서비스 대시보드의 비밀번호 변경 탭에서 비밀번호 변경 이메일을 켜기로 설정하십시오.

  3. 로그인 위젯을 호출하여 세부사항 변경 플로우를 시작하십시오.

    class delegate : AuthorizationDelegate {
       public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response:Response?) {
          //User authenticated, and fresh tokens received
       }
    
       public func onAuthorizationCanceled() {
             //changed details canceled by the user
       }
    
       public func onAuthorizationFailure(error: AuthorizationError) {
             //Exception occurred
       }
    }
    
    AppID.sharedInstance.loginWidget?.launchChangeDetails(delegate: delegate())
    

비밀번호 변경

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 앱에 다음 코드를 배치하여 비밀번호 변경 플로우를 시작하십시오.

    class delegate : AuthorizationDelegate {
       public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response:Response?) {
             //User authenticated, and fresh tokens received
       }
    
       public func onAuthorizationCanceled() {
             //change password canceled by the user
       }
    
       public func onAuthorizationFailure(error: AuthorizationError) {
             //Exception occurred
       }
    }
    
    AppID.sharedInstance.loginWidget?.launchChangePassword(delegate: delegate())
    

Node.js SDK를 사용하여 로그인 위젯 표시

Node.js 서버 SDK를 사용하여 미리 구성된 화면을 호출할 수 있습니다.

사용자 이름과 비밀번호 매개변수로 호출할 수 있는 사후 라우트를 앱에 추가하고 리소스 소유자 비밀번호를 사용하여 로그인하십시오.

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
}));

WebAppStrategy를 사용하여 사용자는 사용자 이름과 비밀번호로 웹 앱에 사인인할 수 있습니다. 로그인 성공 후 사용자의 액세스 토큰은 HTTP 세션에 저장되며 세션 중에 사용할 수 있습니다. 해당 HTTP 세션이 영구 삭제되거나 만료되면 해당 토큰이 무효화됩니다.

가입

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 애플리케이션에 다음 코드를 배치하십시오. 사용자가 애플리케이션에 가입하려고 하면 로그인 위젯이 호출되고 사용자 정의 가입 페이지가 표시됩니다.

    app.get("/sign_up", passport.authenticate(WebAppStrategy.STRATEGY_NAME, {
    successRedirect: LANDING_PAGE_URL,
    show: WebAppStrategy.SIGN_UP
    }));
    

비밀번호 찾기

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에서 해당 계정을 관리할 수 있도록 허용켜기로 설정해야 합니다.

  2. 서비스 대시보드의 비밀번호 재설정 탭에서 비밀번호 찾기 이메일켜기로 설정되어 있는지 확인하십시오.

  3. 애플리케이션에 다음 코드를 배치하여 show 특성을 WebAppStrategy.FORGOT_PASSWORD에 전달하십시오. 사용자가 앱의 비밀번호를 업데이트하도록 요청하면 로그인 위젯이 호출되고 프로세스가 시작됩니다.

    app.get("/forgot_password", passport.authenticate(WebAppStrategy.STRATEGY_NAME, {
    successRedirect: LANDING_PAGE_URL,
    show: WebAppStrategy.FORGOT_PASSWORD
    }));
    

세부사항 변경

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 서비스 대시보드의 비밀번호 변경 탭에서 비밀번호 변경 이메일을 켜기로 설정하십시오.

  3. 애플리케이션에 다음 코드를 배치하여 show 특성을 WebAppStrategy.FORGOT_PASSWORD에 전달함으로써 세부사항 변경 양식을 실행하십시오.

    app.get("/change_details", passport.authenticate(WebAppStrategy.STRATEGY_NAME, {
    successRedirect: LANDING_PAGE_URL,
    show: WebAppStrategy.CHANGE_DETAILS
    }));
    

비밀번호 변경

  1. 콘솔에서 클라우드 디렉터리 설정을 구성합니다. 사용자가 앱에 등록할 수 있도록 허용사용자가 앱에서 해당 계정을 관리할 수 있도록 허용을 둘 다 켜기로 설정하십시오.

  2. 서비스 대시보드의 비밀번호 변경 탭에서 비밀번호 변경 이메일을 켜기로 설정하십시오.

  3. 애플리케이션에 다음 코드를 배치하여 show 특성을 WebAppStrategy.FORGOT_PASSWORD에 전달함으로써 세부사항 변경 양식을 실행하십시오.

    app.get("/change_password", passport.authenticate(WebAppStrategy.STRATEGY_NAME, {
    successRedirect: LANDING_PAGE_URL,
    show: WebAppStrategy.CHANGE_PASSWORD
    }));