IBM Cloud Docs
アプリのブランド設定

アプリのブランド設定

IBM Cloud® App ID では、独自のブランドの画面を使用して、アプリケーションの登録エクスペリエンスを全体的にカスタマイズできます。 提供されているサインイン・ウィジェットを独自のものに置き換えたり、フィールドを増やしたり、パスワードの強度を検証したり、ブロックリストに対してメールアドレスを検証したりすることができます!

画面の再利用について

既にある独自の UI をアプリで再利用すると、統一性のあるサインイン・フローを作成できます。 同じ画像、色、ブランド設定を使用するなら、ユーザーはアプリと直接対話していないときでさえ、ブランドを認識しやすくなります。

英語以外の言語を使用する必要がありますか? 言語管理APIを使用して別の言語を選択し、独自の翻訳コンテンツを表示することができます。

独自のサインイン画面または登録画面で取得する必要がある情報は何ですか?

サインイン・フォームを送信するように要求するときには、要求本文にユーザー名とパスワードの両方のパラメーターが含まれていなければなりません。 つまり、サインイン・ページまたは登録ページで、ユーザーにそれらの情報を求める必要があります。

独自の画面とデフォルトの画面をいくつか使用できますか?

はい。 独自の画面のいくつかとデフォルトの画面のいくつかを使用するハイブリッド・フローを作成できます。 ただし、使用できる選択肢は、1 つのフローにつき 1 つだけです。 例として、独自のサインイン画面を使用するとともに、デフォルトの登録画面を使用することができます。 ただし、デフォルトの登録画面を使用することを選択した場合は、登録の検証を含め、登録フロー全体を通してデフォルトを使い続ける必要があります。

各フローは技術的にどのように異なっていますか?

このサービスでは、OAuth 2.0 付与フローを使用して許可プロセスをマップします。 FacebookなどのソーシャルIDプロバイダを設定する場合、 Authorization Grantフローは、ログインウィジェットを呼び出すために使用されます。 独自の画面を使用する場合は、 リソース所有者のパスワード資格情報フローを使用して、画面の呼び出しに使用できるアクセス・トークンと ID トークンを提供します。

Android SDK によるアプリのブランド設定

Cloud Directory を有効にした場合は、Android SDK を使用してカスタマイズした画面を呼び出せます。 ユーザーとの対話に使用する画面の組み合わせを選択できます。

サインイン

  1. コンソールでCloud Directoryの 設定を 行います。

  2. 以下のコードをアプリケーションに追加します。 ユーザーがカスタム画面でサインインをクリックすると、サインイン・フローがトリガーされます。 ユーザーのユーザー名とパスワードを指定して、アクセス・トークン、識別トークン、リフレッシュ・トークンを取得します。

    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 によるアプリのブランド設定

Cloud Directoryを有効にすると、 iOS Swift SDKを使用して独自のブランド画面を呼び出すことができます。

サインイン

  1. コンソールでCloud Directoryの 設定を 行います。

  2. 以下のコードをアプリケーションに挿入します。 ユーザーがサインインしようとすると、カスタマイズされた画面が呼び出され、カスタマイズされたサインイン・ページで許可および認証のプロセスが開始します。

    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 を使用すると、ユーザーはユーザー名とパスワードを使用して Web アプリにサインインできます。 ユーザーがアプリに正常にサインインすると、アクセス・トークンは、HTTP セッションが存続している限り、そのセッションで持続します。 HTTP セッションが閉じられるか期限切れになると、アクセス・トークンも破棄されます。

  1. コンソールでCloud Directoryの 設定を 行います。

  2. 以下のコードをアプリケーションに挿入します。 ユーザーがサインインしようとすると、カスタマイズされた画面が呼び出され、許可および認証のプロセスが開始します。

    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 インスタンスのプラン制限に達した。
    failureFlash true に設定すると、Cloud Directory サービスからエラー・メッセージが返されます。 デフォルトでは、この値は false に設定されています。

    HTMLでリクエストを送信する場合、 ボディ・パーサー・ ミドルウェアを使うことができる。 返されたエラーメッセージを見るには、 connect-flashを使うことができる。 実際に動作しているところを見るには、 ウェブアプリのサンプルをご覧ください。

API によるアプリのブランド設定

独自のカスタマイズ画面を表示して、App ID の認証機能と許可機能を利用することができます。 Cloud Directory を ID プロバイダーとして使用する場合、ユーザーとアプリの対話が簡単になります。 サインイン、登録、パスワードのリセットなどを、支援を頼まずに各自で行うことができます。

これを可能にするために、App ID では REST API を公開します。 REST API を使用して、Web アプリを提供するバックエンド・サーバーの構築や、独自のカスタム画面を使用したモバイル・アプリとの対話が可能です。

管理 API は、IBM Cloud Identity and Access Management で生成されたトークンで保護されます。これは、各サービス・インスタンスに対してチームの誰がどのレベルのアクセス権限を持つかをアカウント所有者が指定できるということを意味します。 IAM と App ID の連動方法について詳しくは、サービス・アクセス管理を参照してください。

設定を構成したら、以下のエンドポイントを呼び出して各画面を表示できます。

登録

/sign_up エンドポイントを使用して、各ユーザーが自分でアプリに登録できるようにします。 要求本体に以下のデータを指定します。

  • tenantID。
  • 以下の必須属性を含む Cloud Directory ユーザー・データ。 詳細は SCIM Full User Representationを参照。
    • password 属性。
    • 1 つ以上の E メール・アドレスと emails に設定された primary 属性を含んだ true 配列。

E メール構成に応じて、ユーザーは確認の要求を受け取るか、アプリへの登録時のウェルカム・メールを受け取るか、その両方を受け取ります。 どちらのタイプの E メールも、ユーザーがアプリに登録したときにトリガーされます。 確認メールには、ユーザーがクリックすることによって同一性を確認できるリンクが用意されています。クリックすると、確認操作に対する感謝、または確認の完了を伝える画面が表示されます。

独自に用意した確認後のページを表示するには、以下のようにします。

  1. App ID ダッシュボードで Cloud Directory ID プロバイダーにナビゲートします。
  2. **「E メールの検証」**タブをクリックします。
  3. **「カスタム検証ページの URL」**に、独自のランディング・ページの URL を入力します。

この値を指定した場合、App ID はその URL を context 照会とともに呼び出します。 /sign_up/confirmation_result エンドポイントを呼び出し、受け取った context パラメーターを渡すと、その結果から、各ユーザーが自分のアカウントを確認したかどうかがわかります。 確認が済んでいる場合は、独自のカスタム・ページを表示できます。

パスワードを忘れた場合

/forgot_password エンドポイントを使用して、ユーザーがパスワードを忘れた場合に自分でパスワードを回復できるようにします。

要求本体に以下のデータを指定します。

  • テナント ID。
  • Cloud Directory ユーザーの E メール。

このエンドポイントが呼び出されると、パスワード・リセット E メールがユーザーに送信されます。 この E メールには**「リセット (Reset)」**ボタンがあります。 このボタンをユーザーが押すと、パスワードを再設定できる画面が App ID によって表示されます。

独自に用意したパスワード・リセット後のページを表示するには、以下のようにします。

  1. コンソールでCloud Directoryの 設定を 行います。 **「ユーザーがアプリケーションからアカウントを管理できるようにする」「オン」**に設定する必要があります。
  2. サービス・ダッシュボードの**「パスワードの再設定」タブで、「パスワード再設定の E メール」「オン」**に設定されていることを確認します。
  3. 独自のランディング・ページの URL を**「カスタム・パスワード・リセット・ページの URL (URL for your custom reset password page)」**に入力します。

この値を指定した場合、App ID はその URL を context 照会とともに呼び出します。 context を呼び出すと、この /forgot_password/confirmation_result パラメーターを使用して結果を受け取ることができます。 正常な結果が得られた場合は、独自のカスタム・ページを表示できます。

ランダムなストリングをカスタム・パスワード・リセット・ページに追加し、要求の送信時にそれをバックエンドに渡すようにしてください。 そのストリングをハンドラーで検証し、それが有効である場合のみ /change_password エンドポイントを呼び出すようにします。 そうすることで、バックエンドのパスワード・リセット・エンドポイントの脆弱性を減らすことができます。

パスワードの変更

/change_password エンドポイントは、ユーザーがリセット要求を送信するときか、ユーザーがアプリにサインインしてパスワードの更新を要求するときに使用できます。

/change_password API を呼び出してユーザーにパスワードのリセットを許可する前に、context エンドポイントを使用して /forgot_password/confirmation_result で正常な結果が得られるかどうかを確認することをお勧めします。 この操作により、バックエンドのパスワード・リセット・プロセスに高レベルのセキュリティーが追加され、context が引き続き有効な場合にのみ、ユーザーがパスワードを変更できるようになります。

リセット要求後にユーザー・パスワードを更新するには、要求本体に以下のデータを指定します。

  • tenantID。
  • ユーザーの新規パスワード。
  • Cloud Directory ユーザーの UUID。
  • オプション: パスワード・リセットの実行元となる IP アドレス。 IP アドレスを渡す場合は、パスワード変更 E メールのテンプレートでプレースホルダー %{passwordChangeInfo.ipAddress} を使用できます。

構成によっては、パスワードが変更されると、App ID は、変更が行われたことを通知する E メールを該当ユーザーに送信します。

ユーザーがアプリへのサインイン中に自分でパスワードを変更できるようにするには、要求本体に以下のデータを指定します。

  • tenantID。
  • ユーザーの新規パスワード。
  • Cloud Directory ユーザーの UUID。

パスワード変更ページでは、ユーザーに対して現在のパスワードと新規パスワードを入力するように求める必要があります。

バックエンドで ROP API を使用してユーザーの現在のパスワードが検証され、それが有効であった場合は、新規パスワードを使用してこのエンドポイントが呼び出されます。 構成によっては、パスワードが変更されると、変更があったことを該当ユーザーに通知する E メールを App ID で送信することもできます。

再送

/resend/<templateName> を使って、ユーザーが何らかの理由でメールを受信できなかった場合に再送信することができます。

要求本体に以下のデータを指定します。

  • tenantID。
  • テンプレート名
  • Cloud Directory ユーザーの UUID。

詳細の変更

ユーザーは、アプリにサインインしているときに、ユーザー情報の一部を自分で更新することができます。 /Users/<userID> 、彼らの情報を入手したり更新したりすることができる。

ユーザー詳細が更新されると、エンドポイントはリクエストボディ内の更新されたユーザーデータを SCIMフォーマットで取得する。 関連する詳細のみを変更するようにしてください。

ユーザーの E メール・アドレスは変更できません。