Newer Version Available
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 サイトにアクセスできるかによって異なります。