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

LoginDiscoveryHandler インターフェース

Salesforce では、ユーザ名とパスワード以外の確認方法に基づくユーザのログイン機能が提供されます。たとえば、メール、電話番号、または別の ID (統合 ID やデバイス識別子など) を使用してログインするようにユーザに要求できます。

名前空間

Auth

使用方法

インタビューベースのログイン用の Auth.LoginDiscoveryHandler を実装します。このハンドラは、入力された ID からユーザを検索し、Site.passwordlessLogin をコールして、使用するログイン情報 (メール、SMS など) を決定できます。または、ハンドラはユーザをログイン用のサードパーティ ID プロバイダにリダイレクトできます。このハンドラを使用した場合、ログインページにパスワード項目は表示されません。ただし、Site.passwordlessLogin を使用して、パスワードを要求できます。

ユーザの観点では、ユーザはログイン画面で ID を入力します。次に、PIN またはパスワードを入力してログインを完了します。または、SSO が有効になっている場合、ユーザはログインをスキップします。

例については、「LoginDiscoveryHandler の実装例」を参照してください。詳細は、『Salesforce External Identity Implementation Guide (Salesforce External Identity 実装ガイド)』を参照してください。

LoginDiscoveryHandler メソッド

LoginDiscoveryHandler のメソッドは次のようになります。

login(identifier, startUrl, requestAttributes)

メールや電話番号などの識別子が指定された外部ユーザのログインを行います。成功した場合、開始 URL で指定されたコミュニティページにユーザをリダイレクトします。

署名

public System.PageReference login(String identifier, String startUrl, Map<String,String>requestAttributes)

パラメータ

identifier
型: String
ログイン画面で外部ユーザが入力した識別子 (メールアドレスや電話番号など)。
startUrl
型: String
外部ユーザが要求したコミュニティページへのパス。ログインが成功すると、ユーザはこの場所にリダイレクトされます。
requestAttributes
型: Map<String,String>
ログイン要求に関するさまざまなデータ (ユーザエージェント、IP アドレス、デバイス識別子、または他の HTTP ヘッダーなど)。ログインページにアクセスしたときにユーザのブラウザ状態に基づいてシステムによって提供されます。

戻り値

型: System.PageReference

ユーザがリダイレクトされるページの URL。

LoginDiscoveryHandler の実装例

この Apex コード例は Auth.LoginDiscoveryHandler インターフェースを実装します。ログインページで提供された ID に応じて、ログインしているユーザのメールまたは電話番号が検証済みかどうかをチェックします。検証済みの場合 (Auth.VerificationMethod.EMAIL または Auth.VerificationMethod.SMS)、ID (ユーザのメールアドレスまたはモバイルデバイス) にチャレンジを送信します。検証ページでユーザがコードを正しく入力すると、ユーザは開始 URL で指定されたコミュニティページにリダイレクトされます。ユーザが検証されない場合、ユーザはログインのためのパスワードを入力する必要があります。

discoveryResult 関数は Site.passwordlessLogin メソッドをコールし、指定された検証方法でユーザをログインします。getSsoRedirect 関数は、ユーザが SAML または認証プロバイダを使用してログインする必要があるかどうかを参照します。実装に固有のロジックを追加して、この参照方法を操作します。