この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ログインフローの例

ログインフローを使用して、ログイン操作をカスタマイズし、ビジネスプロセスを Salesforce 認証に統合できます。一般的な使用事例として、ログイン時のユーザデータの収集と更新、2 要素認証の設定、サードパーティの強力な認証方式の統合などがあります。

ログイン時のユーザデータの収集と更新

このログインフローでは、ログイン時にユーザの電話番号を要求することでユーザに関する情報を収集して更新します。

  1. ユーザオブジェクトを照会してユーザの電話番号を検索します (存在する場合)。
  2. 電話番号を表示し、ユーザに確認または更新するように要求します。
  3. 新しい番号が入力された場合は、ユーザオブジェクトを更新します。

ログインフロー例の手順

フローの作成

  1. クラウドフローデザイナに移動します。
  2. [リソース] タブで、現在のユーザの UserId が含まれる変数を作成します。

    ログインイベントはコンテキスト属性のリストをフローに渡します。これらの属性をクエリおよび使用するには、LoginFlow_ATTRIBUTE_NAME 形式 (例: LoginFlow_UserId) でローカルテキスト変数を定義します。

    フローのユーザ ID 変数の定義

    属性を追加すると、[変数] の下の [エクスプローラ] タブに表示されます。

    次の入力属性を使用する場合、それらの値はフローで開始時に入力されます。
    • LoginFlow_LoginType
    • LoginFlow_IpAddress
    • LoginFlow_UserAgent
    • LoginFlow_Platform
    • LoginFlow_Application
    • LoginFlow_Community
    • LoginFlow_SessionLevel
    • LoginFlow_UserId

    次の出力属性もフローで設定できます。

    • LoginFlow_FinishLocation (string 型)。この属性によって、フロー完了時のユーザの移動先が決まります。
    • LoginFlow_ForceLogout (boolean 型)。この変数が true に設定されていると、ユーザは直ちにログアウトされます。

    属性 LoginFlow_UserId を使用して、ログインしているユーザの ID を検証し、関連するユーザオブジェクトを照会できます。

  3. [リソース] タブで、[新規作成] をクリックし、ユーザオブジェクトを保存できる sObject 変数を作成します。

    sObject 変数の定義

  4. ユーザオブジェクトを検索する高速検索要素を作成します。

    高速検索要素の作成

  5. 変数に保存するユーザ属性を指定します。たとえば、PhoneMobilePhone などです。
  6. ログイン時に電話番号を収集または表示するためのようこそ画面を作成します。

    ようこそ画面の作成

  7. 番号を更新するためのレコードの更新コンポーネントを作成します。

    レコードの更新コンポーネント

  8. ログインフローに名前を付けて保存します。

    フロープロパティ

  9. ログインフローをユーザプロファイルに接続します。ベストプラクティスは、テストプロファイルを持つ専用のテストユーザを作成することです。

    ログインフローが適切に動作することを確認するまで、ログインフローをシステム管理者プロファイルに関連付けないでください。そうしないと、失敗した場合にシステム管理者が組織にログインできなくなります。

    メモ

  10. ログアウトし、テストユーザとしてログインしてフローをテストします。

    Welcome Flow の例をテストすると、Lightning Experienceでは次のような画面が表示されます。

    ようこそ画面の例

2 要素認証の設定

この例では、時間ベースのワンタイムパスワード (TOTP) 認証を Salesforce でサポートされる 2 要素認証方式で拡張します。TOTP アルゴリズムは共有秘密鍵と現在時刻からワンタイムパスワードを計算します。

フローは次の処理を行います。

  • ユーザが未登録の場合、新しい秘密鍵を生成し、ユーザに QR (クイックレスポンス) コードで鍵を登録するように促します。ユーザが有効な TOTP トークンを入力すると、秘密鍵がユーザレコードに保存されます。この鍵は、以降のログインで再利用されます。
  • ユーザが登録済みの場合、ユーザに TOTP トークンの入力のみを促します。

ユーザは時間ベースの認証アプリケーション (Salesforce Authenticator や Google Authenticator ��ど) を使用して QR コードをスキャンし、TOTP トークンを生成できます。

会社のロゴ、色などを追加して、このフローを拡張し、ユーザ操作をカスタマイズできます。さまざまなポリシーを追加して適用することさえできます。たとえば、IP ベースの 2 要素認証プロセスを作成して、IP アドレスが特定の範囲外である場合にのみ第 2 認証要素を要求できます。

この例では TwoFactorInfo オブジェクトと Auth.SessionManagement Apex クラスを使用して、Salesforce でサポートされる標準ベースの TOTP 2 要素認証をカスタマイズおよび管理します。

  1. 現在のユーザの TwoFactorInfo オブジェクトを検索します。ユーザが未登録の場合、鍵を生成します。
  2. ユーザが TOTP に登録済みかどうかを判別します。
  3. ユーザが登録済みの場合、ユーザに TOTP トークンを入力するように促します。
  4. ユーザが未登録の場合、ユーザに QR コードで登録し、TOTP トークンを入力するように促します。
  5. TOTP トークンを検証します。トークンが有効な場合、ログインフローは完了し、ユーザはログインします。
  6. TOTP トークンが無効な場合、ユーザはステップ 2 に戻されます。

TOTP フローのステップ

TOTP フローの設定

  1. 変数を作成します。
    • secret — 2 要素操作の秘密鍵を保存します。
    • qr_url — 秘密鍵の QR コードエンコーディングの URL を保存します。
    • IsTokenValid — 検証結果を保存します。

    変数 secret および qr_url は text データ型で、IsTokenValid は Boolean データ型です。

    TOTP の変数の作成

  2. TOTP に未登録のユーザに対して新しい秘密を生成するように TOTPPlugin を設定します。

    プラグインはフローの標準機能を拡張する Apex クラスです。プラグインを使用して、複雑な計算、外部サービスへの API コールなどを実行できます。

    TOTPPlugin は Salesforce の TOTP メソッドにアクセスし、時間ベースの秘密鍵と QR コードを生成し、TOTP を検証します。TOTPPlugin の Apex クラスは、ログインフローのサンプルパッケージから入手できます。

    このプラグインは、次の入力パラメータを取り込みます。

    • OTP_INPUT — ユーザが入力する TOTP トークン。
    • OTP_REGISTRATION_INPUT — ユーザが最初の登録時に入力する TOTP トークン。
    • SECRET_INPUT — TOTP の生成に使用される秘密鍵。

    次のパラメータが返されます。

    • SECRET_OUTPUT — このプラグインで生成された秘密鍵。
    • QR_URL_OUTPUT — 秘密鍵の QR エンコーディング。
    • IsValid_OUTPUT — 検証が成功した場合、true を返します。ない場合は false を返します。

    TOTP プラグインの設定

    ユーザが未登録の場合、新しい秘密鍵と QR コードを生成するように TOTPPlugin インスタンスを設定します。この場合、入力は渡されません。

    TOTP プラグインの入力

    秘密鍵と QR コードの URL は、secret および qr_url 変数に保存されます。

    TOTP プラグインの出力

  3. ユーザを登録するための決定要素を設定します。

    決定要素 Registration は、secret が null かどうかを検証します。null ではない場合、ユーザの登録が必要であるため、[Register (登録)] を決定の結果として定義します。null の場合、ユーザは登録済みであり、TOTP トークンの入力のみを要求する必要があります。この場合、結果は [Get TOTP (TOTP を取得)] です。これはデフォルトの結果でもあります。

    登録の決定要素

  4. TOTP 画面を設定します。

    登録済みのユーザは、この画面にリダイレクトされ、TOTP トークンを入力するように要求されます。入力 TOTP トークンは OTP_input に保存されます。

  5. 登録画面を設定します。

    この画面では、QR コードを表示し、ユーザにスキャンして TOTP クライアントアプリケーションを初期化し、TOTP トークンを入力するように要求します。

    登録トークンの取得画面

  6. TOTP トークンを検証します。

    ユーザが入力した TOTP トークンを検証するために、TOTPPlugin のインスタンスをもう 1 つ定義します。

    検証用のプラグインの定義

    このプラグインは次の使用事例をサポートしています。

    • ユーザが登録画面から移動してきます。ユーザは QR コードをスキャンして TOTP トークンを入力する必要があります。TOTP トークンと秘密の両方が検証のために TOTPPlugin に渡されます。TOTPPlugin が秘密に対して TOTP トークンを検証します。有効な場合、秘密はユーザレコードに登録され、以降のログインで使用されます。
    • ユーザがトークンの取得画面から移動してきます。ユーザは登録済みであるため、TOTP トークンのみを入力します。TOTP トークンは、検証のために TokenInput パラメータを介して TOTPPlugin に渡されます。

    TOTP の入力の検証

    isTokenValid パラメータは検証状況を返し、その値は isTokenValid に保存されます。

    TOTP の出力の検証

    決定要素は、次の 2 つのいずれかの結果になります。
    • IsTokenValid が true の場合、トークンは有効です。
    • トークンは無効です (デフォルト)。
  7. ユーザをログインするための決定要素を設定します。

    検証が成功した場合、ユーザはフローの最後まで進み、クリックして次のステップに移動し、アプリケーションにログインします。検証が失敗した場合、フローはユーザをフローのステップ 2 にリダイレクトして戻します。ステップ 2 では、登録済みユーザに新しい TOTP トークンの入力が要求されます。ユーザが未登録の場合、ユーザには新しい TOTP トークンの登録と入力が要求されます。

    TOTP のログインの決定

  8. ログインフローを保存し、有効化し、ユーザプロファイルに接続します。

サードパーティの強力な認証方式の統合

ログインフローを使用すると、API を使用して外部のサードパーティ認証サービスとやりとりすることもできます。

たとえば、Yubico は YubiKey というハードウェアトークンを使用する強力な認証を提供しています。Yubico はまた、GitHub で Apex ライブラリとログインフローの例も提供しています。このライブラリには、YubiKey OTP (ワンタイムパスワード) を検証するための Apex クラスが含まれています。これらのクラスを使用すると、Salesforce ユーザは、ログイン時の第 2 認証要素として YubiKey を使用できます。詳細は、yubikey-salesforce-client を参照してください。

Twilio や TeleSign のようなサードパーティの SMS または音声配信サービスを導入して、SMS ベースの 2 要素認証と ID 検証フローを実装することもできます。詳細は、「サードパーティの SMS ベースの 2 要素認証のリリース」を参照してください。

ログインフローのサンプルパッケージ

未管理パッケージによって、さまざまなログインフローのサンプルが Salesforce 組織にインストールされます。次の例が含まれています。
  • Email Confirmation (メール確認) — 確認コードを含むメールを送信する
  • SF-TOTP — TOTP 2 要素認証
  • Conditional Two–Factor (条件付き 2 要素) — 信頼できる IP アドレスからアクセスしているユーザについては 2 要素認証をスキップする
  • Identity Confirmation (ID 確認) — メールまたは 2 要素認証を使用してユーザ ID を確認する
  • Accept Terms of Service (サービス利用規約への同意) — 続行する前にユーザに利用規約への同意を要求する