LoginDiscoveryHandler インターフェース
名前空間
使用方法
インタビューベースのログイン用の Auth.LoginDiscoveryHandler を実装します。このハンドラーは、入力された ID からユーザーを検索し、Site.passwordlessLogin をコールして、使用するログイン情報 (メール、SMS など) を決定できます。または、ハンドラーはユーザーをログイン用のサードパーティ ID プロバイダーにリダイレクトできます。このハンドラーを使用した場合、ログインページにパスワード項目は表示されません。ただし、Site.passwordlessLogin を使用して、パスワードを要求できます。
ユーザーの観点では、ユーザーはログイン画面で ID を入力します。次に、PIN またはパスワードを入力してログインを完了します。または、SSO が有効になっている場合、ユーザーはログインをスキップします。
例については、「LoginDiscoveryHandler の実装例」を参照してください。詳細は、Salesforce ヘルプの「Salesforce Customer Identity」を参照してください。
LoginDiscoveryHandler メソッド
LoginDiscoveryHandler のメソッドは次のようになります。
login(identifier, startUrl, requestAttributes)
署名
public System.PageReference login(String identifier, String startUrl, Map<String,String>requestAttributes)
パラメーター
- identifier
- 型: String
- ログイン画面で顧客またはパートナーが入力した識別子 (メールアドレスや電話番号など)。
- startUrl
- 型: String
- 顧客またはパートナーが要求した Experience Cloud サイトページへのパス。ログインが成功すると、ユーザーはこの場所にリダイレクトされます。
- requestAttributes
- 型: Map<String,String>
- ログインページにアクセスしたときのユーザーのブラウザー状態に基づくログイン要求に関する情報。requestAttributes は、CommunityUrl、IpAddress、UserAgent、Platform、Application、City、Country、Subdivision の値を渡します。City、Country、Subdivision の値は IP 地理位置情報から取得されます。
例
次に requestAttributes のサンプル応答を示します。
LoginDiscoveryHandler の実装例
この Apex コード例は Auth.LoginDiscoveryHandler インターフェースを実装します。ログインページで提供された ID に応じて、ログインしているユーザーのメールまたは電話番号が検証済みかどうかをチェックします。検証済みの場合 (Auth.VerificationMethod.EMAIL または Auth.VerificationMethod.SMS)、ID (ユーザーのメールアドレスまたはモバイルデバイス) にチャレンジを送信します。検証ページでユーザーがコードを正しく入力すると、ユーザーは開始 URL で指定された Experience Cloud サイトのページにリダイレクトされます。ユーザーが検証されない場合、ユーザーはログインのためのパスワードを入力する必要があります。また、ハンドラーは users.size()==1 のコードによってメールアドレスと電話番号が一意であることも確認します。
discoveryResult 関数は Site.passwordlessLogin メソッドをコールし、指定された検証方法でユーザーをログインします。getSsoRedirect 関数は、ユーザーが SAML または認証プロバイダーのどちらを使用してログインするかを参照します。実装に固有のロジックを追加して、この参照方法を操作します。
コード例: プロファイルによるログイン検出のユーザーの絞り込み
本番組織では、同じ検証済みメールアドレスと携帯電話番号を持つ複数のユーザーが存在することが可能です。ただし、顧客は一意のユーザーしか持てません。この問題に対処するには、固有性を確保するために数行のコードを追加し、ユーザーをプロファイルで絞り込めるようにします。このコード例では、外部 ID ユーザープロファイルを持つユーザーが処理されますが、他のユースケースをサポートするように調整できます。たとえば、他のユーザーライセンスまたは基準を持つユーザーに対応するようにコードの最初の行を変更できます。
Login Discovery は、Customer Community、Customer Community Plus、External Identity、Partner Community、Partner Community Plus ユーザーライセンスで使用可能です。これは、どのプロファイルが Experience Cloud サイトにアクセスできるかによって異なります。