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

UserManagement クラス

エンドユーザーの管理 (検証方法の登録、ID の検証、個人情報の削除など) を行うためのメソッドが含まれます。

名前空間

System

使用方法

ユーザーが ID 検証方法を登録および登録解除できます。パスワードなしのログインおよびセルフ登録用のカスタムログインページおよび検証ページを作成します。ユーザーを登録する前に携帯電話番号を適切な形式に変換します。Salesforce が個人情報の削除をユーザーから要求されたときに、ユーザーデータをスクランブルします。

このクラスは、API バージョン 43.0 以降で使用できます。

UserManagement メソッド

UserManagement のメソッドは次のとおりです。

clone()

System.UserManagement オブジェクトの重複コピーを作成します。

署名

public Object clone()

戻り値

型: UserManagement

deregisterVerificationMethod(userId, method)

ID 検証方法の登録を解除します。このメソッドを使用すると、ユーザーが既存の検証方法を削除できます。

署名

public static void deregisterVerificationMethod(Id userId, Auth.VerificationMethod method)

パラメーター

userId
型: Id
検証方法の登録を解除しているユーザーのユーザー ID。
method
型: Auth.VerificationMethod
ユーザーの ID の検証に使用する検証方法。

戻り値

型: void

使用方法

このメソッドを使用して、既存の ID 検証方法の登録を解除します。たとえば、ユーザーは電話番号が変更されたときに、電話番号の登録を解除できます。ID 検証方法を登録できるのはエンドユーザーのみですが、登録の解除は開発者とユーザーが実行できます。カスタム登録ページを実装するときは、この動作に留意してください。

このメソッドは API バージョン 43.0 以降で使用できます。

このメソッドでは、組み込み Authenticator の登録解除はサポートされていません。

メモ

formatPhoneNumber(countryCode, phoneNumber)

ユーザーの携帯電話番号に形式を設定します。ユーザーの携帯電話番号を更新する前にこのメソッドをコールすると、電話番号が適切な形式で設定されます。

署名

global static String formatPhoneNumber(String countryCode, String phoneNumber)

パラメーター

countryCode
型: String
有効な国コード。
phoneNumber
型: String
国コードは除いて 3 ~ 49 文字の数値を含む携帯番号。たとえば、(415) 555-1234 など。

戻り値

型: String

ユーザーの携帯電話番号を適切な形式で返します。

使用方法

このメソッドを使用して、ユーザーの携帯電話番号が Salesforce で要求される形式になるようにします。次に、このメソッドの戻り値を使用して、ユーザーのレコードの mobile 項目を更新します。この携帯番号は SMS ベースのデバイスの有効化に使用されます。たとえば、携帯電話番号は他の ID 検証方法と共に Auth.VerificationMethod 列挙に保存されます。このメソッドは、API バージョン 43.0 で導入されました。以前のバージョンでは使用できません。

ユーザーが携帯番号の入力時に使用できる形式を次にいくつか示します。

  • +1, (415) 555-1234 (+ 記号、括弧、ダッシュを含む)
  • 1, 4155551234 (数字のみで記号を含まない)
  • 1 , 415-555-1234 (余分なスペース)

次の例を考えてみます。

  • 正しい例:
    • formatPhoneNumber('1', '4155551234');
    • formatPhoneNumber('+1','(415) 555-1234');
    • formatPhoneNumber('1', '415-555-1234');
  • 国コードと携帯番号が分かれているため、正しくない例:
    • formatPhoneNumber(null, '+1 415-555-1234');
  • エラーは発生しないが、適切に機能しない可能性が高い例:
    • formatPhoneNumber('+1', '+1 (415) 555-1234');

formatPhoneNumber コードの例

formatPhoneNumber メソッドを使用したコードの例を次に示します。ユーザーの携帯番号を取得し、それを Salesforce で要求される形式に変換します。次に、書式設定された携帯番号でユーザーのレコードを更新します。

1global with sharing class PhoneRegistrationController {
2    //Input variables 
3    global String countryCode {get; set;}
4    global String phoneNumber {get; set;}
5
6    global String addPhoneNumber() 
7    {
8        if(countryCode == null) return 'Country code is required';
9        if(phoneNumber == null) return 'Phone number is required';
10        
11        String userId = UserInfo.getUserId();
12        User u = [SELECT Id FROM User WHERE Id=:userId LIMIT 1];
13        String formatNum = System.UserManagement.formatPhoneNumber(countryCode, phoneNumber);        
14        u.MobilePhone = formatNum;        
15        update u;        
16        return null;        
17    }
18        
19}

国コードと電話番号が分かれていれば、formatPhoneNumber は適切な形式で値を返します。

initPasswordlessLogin(userId, method)

顧客およびパートナー向けにカスタムの (Visualforce) ログインおよび検証ページを作成する場合に、パスワードなしのログインに対する検証を呼び出します。

署名

public static String initPasswordlessLogin(Id userId, Auth.VerificationMethod method)

パラメーター

userId
型: Id
ログインするユーザーの ID。
method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL または SMS。

戻り値

型: String

検証試行の ID。

使用方法

このメソッドと、対応する verifyPasswordlessLogin を一緒に使用することで、独自の Visualforce ログインページおよび検証ページのログイン操作をカスタマイズできます。ユーザーがメールアドレスまたは電話番号を入力するログインページから initPasswordlessLogin を呼び出します。

このメソッドの組み合わせの代わりに、Site.passwordlessLogin を使用することもできます。いずれの方法でも、Visualforce のログインページをカスタマイズできます。このメソッドのペアでは、カスタムのログインおよび検証ページを作成できます。Salesforce では、Site.passwordlessLogin によって検証ページが提供されます。

メモ

まず、initPasswordlessLogin メソッドをコールし、認証チャレンジを開始します。このメソッドは次のように動作します。

  • ログインページから EMAIL や SMS などのユーザー ID と検証方法を取得します。
  • ユーザーを参照し、そのユーザーが一意で有効であることを確認します。
  • ユーザーに確認コードを送信します。
  • 検証試行のエントリを ID 検証履歴ログに追加し、検証試行に ID を割り当てて、状況を [ユーザーによる確認コードの入力を待機中] に設定します。
  • パスワードなしログインのエントリをログイン履歴ログに追加します。
  • ID を verifyPasswordlessLogin に返して、トランザクションをリンクします。

次に、verifyPasswordlessLogin をコールします。これにより、ユーザーが確認コードを正しく入力した場合は、ユーザーがログインされます。

ユーザーがパスワードなしでログインできるようになるには、事前にメールアドレスまたは電話番号で ID を検証する必要があります。ユーザーが検証されたかどうかは、[設定] にあるユーザーの詳細ページから確認できます。TwoFactorMethodsInfo を使用して、プログラムで確認することもできます。

メモ

initRegisterVerificationMethod(method)

ID 検証方法をカスタム (Visualforce) ページに登録するための検証を呼び出します。ユーザーは、メールアドレスまたは電話番号を登録できます。

署名

public static String initRegisterVerificationMethod(Auth.VerificationMethod method)

パラメーター

method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL または SMS。

戻り値

型: String

このメソッドがエラーメッセージを返すのは、電話番号がすでに登録されている場合、ユーザーが顧客またはパートナーでない場合、またはコンテキストが Experience Cloud サイトでない場合です。

使用方法

このメソッドと、対応する verifyRegisterVerificationMethod を併用すると、Visualforce 検証ページを使用して、ユーザーの検証方法の登録プロセスをカスタマイズできます。

最初に initRegisterVerificationMethod メソッドをコールし、ユーザーに入力として送信される確認コードを取得して検証します。確認コードが有効でない場合は、エラーメッセージが返されます。

例

ユーザーの電話番号を検証方法として登録するコードの例を次に示します。ユーザーが Visualforce ページで確認コードを入力すると、registerUser() が呼び出されます。このメソッドは、検証方法とユーザーの電話番号を登録するユーザーのユーザー ID を取得します。また、ユーザーの登録状況を取得して、電話番号がすでに検証されているかどうかを検査します。ユーザーが別の電話番号で登録されている場合は、その電話番号が更新されます。

1public void registerUser() {
2        try {
3            exceptionText='';
4            String userId = UserInfo.getUserId();
5            User u = [Select MobilePhone, Id from User Where Id=:userId];
6             currPhone = u.MobilePhone;
7             mobilePhone = getFormattedSms(mobilePhone); 
8           if (mobilePhone != null && mobilePhone != '') {
9           u.MobilePhone = mobilePhone;
10           update u;
11            // We're updating the email and phone number before verifying. Roll back  
12           //  the change in the verify API if it is unsuccessful.
13            exceptionText = System.
14            UserManagement.initRegisterVerificationMethod(Auth.VerificationMethod.SMS);
15            if(exceptionText!= null && exceptionText!=''){
16                isInit = false;
17                showInitException = true;
18            } else {
19                 isInit = false;
20                 isVerify = true;
21            }
22            } else {
23                showInitException = true;
24            }
25        } catch (Exception e) {
26            exceptionText = e.getMessage();
27            isInit = false;
28            showInitException = true;
29        }
30    }
31
32public void verifyUser() {
33    // Take the user’s input for the code sent to their phone number
34    exceptionText = System.UserManagement.
        verifyRegisterVerificationMethod(code, Auth.VerificationMethod.SMS);
35    if(exceptionText != null && exceptionText !=''){
36    showInitException = true;
37    } else {
38            //Success    
39    }
40}

initSelfRegistration(method, user)

Experience Cloud のセルフ登録用にカスタムの (Visualforce) 検証ページを作成する場合に、セルフ登録に対する検証を呼び出します。

署名

public static String initSelfRegistration(Auth.VerificationMethod method, User user)

パラメーター

method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL または SMS。
user
型: User
登録の成功後に挿入されるユーザーオブジェクト。

戻り値

型: String

登録試行の ID。

使用方法

デフォルトでは、ユーザーがメールアドレスまたは電話番号で Experience Cloud サイトにサインアップすると、Salesforce から検証コードが送信されます。同時に、ユーザーが ID を確認できる検証ページが生成されます。デフォルトの Salesforce 検証ページを独自の Visualforce ページに置き換えて、検証プロセスを呼び出すことができます。

このメソッドを呼び出すと、認証チャレンジが開始されます。登録が成功した場合は、挿入する User オブジェクトを含めます。このメソッドでは、試行されたセルフ登録の ID が返されます。

User オブジェクトの LanguageLocaleKey 項目で言語を指定すると、確認メールおよび SMS メッセージでその言語が使用されます。

メモ

次に、verifySelfRegistration をコールします。これにより、ユーザーが確認コードを正しく入力した場合は、ユーザーがログインされます。

例

次のコードには、新しいユーザーを登録するための検証の結果が含まれています。

1String id = System.UserManagement.initSelfRegistration​
2          (Auth.VerificationMethod.SMS, user);
3        Auth.VerificationResult res = System.UserManagement.verifySelfRegistration​
4          (Auth.VerificationMethod.SMS, id, ‘123456’, null);
5        if(res.success == true){
6     //redirect
7}

initVerificationMethod(method)

メール、電話 (SMS)、および Salesforce Authenticator 検証方法の検証サービスを開始します。

署名

public static String initVerificationMethod(Auth.VerificationMethod method)

パラメーター

method
型: Auth.VerificationMethod
EMAIL、SMS、SALESFORCE_AUTHENTICATOR などの検証方法の検証サービスを開始するために使用するメソッド。

戻り値

型: String

返される識別子は verifyVerificationMethod に渡される必要があります。

使用方法

このメソッドと、対応する verifyVerificationMethod を一緒に使用することで、EMAIL、SMS、SALESFORCE_AUTHENTICATOR などの検証メソッドの検証サービスをカスタマイズできます。initVerificationMethod から返された識別子は、verifyVerificationMethod に渡す必要があります。

最初に initVerificationMethod メソッドを呼び出して、確認コードをユーザーのメールアドレスまたは電話番号に送信するか、プッシュ通知を Salesforce Authenticator に送信します。次に、ユーザーは、コードを入力するか、プッシュ通知を承認します。確認コードが有効でない場合、またはプッシュ通知が承認されない場合、エラーメッセージが返されます。

メールの例

この例では、メールを使用した多要素認証の例を示します。

1public void initVerification() {
2// user will receive code on their registered verified email 
3 identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.EMAIL);
4}
5
6public Auth.VerificationResult verifyVerification() {
7// requiring identifier from the initVerification
8// the code will need to be entered in this method
9return UserManagement.verifyVerificationMethod(identifier, code , Auth.VerificationMethod.EMAIL);
10}

initVerificationMethod(method, actionName, extras)

メール、電話 (SMS)、および Salesforce Authenticator 検証方法の検証サービスを開始します。

署名

public static String initVerificationMethod(Auth.VerificationMethod method, String actionName, Map<String,String> extras)

パラメーター

method
型: Auth.VerificationMethod
EMAIL、SMS、SALESFORCE_AUTHENTICATOR などの検証方法の検証サービスを開始するために使用するメソッド。
actionName
型: String
Connect to My Salesforce Org などの Salesforce Authenticator に表示するアクションの名前 (SALESFORCE_AUTHENTICATOR 検証メソッドの場合のみ)。デフォルトアクション名は Apex-Defined Activity です。
extras
型: Map<String,String>
SALESFORCE_AUTHENTICATOR 検証メソッドの場合のみ、次の追加の設定があります。
  • secure_device_required – true に設定すると、ユーザーのデバイスをセキュリティで保護する必要があります。たとえば、ユーザーは要求を承認するためにデバイスのパスコードを入力する必要があります。デフォルト設定は false です。
  • challenge_required – true に設定した場合、ユーザーは要求を承認するために、デバイスで顔認識などの生体認証の検証を完了する必要があります。デフォルト設定は false です。

戻り値

型: String

返される識別子は verifyVerificationMethod メソッドに渡される必要があります。

使用方法

このメソッドと、対応する verifyVerificationMethod を一緒に使用することで、EMAIL、SMS、SALESFORCE_AUTHENTICATOR などの検証メソッドの検証サービスをカスタマイズできます。initVerificationMethod から返された識別子は、verifyVerificationMethod メソッドに渡す必要があります。

最初に initVerificationMethod メソッドを呼び出して、確認コードをユーザーのメールアドレスまたは電話番号に送信するか、プッシュ通知を Salesforce Authenticator に送信します。次に、ユーザーは、コードを入力するか、プッシュ通知を承認します。確認コードが有効でない場合、またはプッシュ通知が承認されない場合、エラーメッセージが返されます。

Salesforce Authenticator の例

この例では、Salesforce Authenticator モバイルアプリケーションを使用した多要素認証 (MFA) の例を示します。この例の場合、actionName パラメーターはデフォルト設定に設定され、extra パラメーターの設定は false に設定されています。

1public void initVerification() {
2// user will receive push notification on their registered MFA devices
3identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);
4}
5
6public Auth.VerificationResult verifyVerification() {
7// requiring identifier from the initVerification
8// user will need to take the action on their registered MFA devices
9return UserManagement.verifyVerificationMethod(identifier, '' , Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);
10}

この例では、Salesforce Authenticator を使用した多要素認証の例を示します。この例の場合、actionName パラメーターは Connect to My Salesforce Org に設定され、challenge_required extra パラメーターの設定は true に設定されています。

1public void initVerification() {
2Map<String,String> extras = new Map<String,String>();
3extras.put('challenge_required','true');
4// user will receive push notification in their registered MFA devices
5identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR, 'Connect to My Salesforce Org', extras);
6}
7
8public Auth.VerificationResult verifyVerification() {
9// requiring identifier from the initVerification
10// user will need to take the action on their registered MFA devices
11return UserManagement.verifyVerificationMethod(identifier, '' , Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);
12}

obfuscateUser(userId, username)

Salesforce で個人データが認識されることをユーザーが望まなくなったときに、要求に応じてユーザーのデータをスクランブルします。ユーザーに対してこのメソッドを呼び出すと、データが匿名になり、そのデータを復元できなくなります。このメソッドを使用して、スクランブル後にユーザー名を特定の値に設定します。

署名

public static void obfuscateUser(Id userId, String username)

パラメーター

userId
型: Id
このメソッドでスクランブルするデータを所有するユーザーの ID。
username
型: String
ユーザーのデータがスクランブルされた後のユーザー名。スクランブルされたユーザー名の値を特定の文字列に設定します。

戻り値

型: void

使用方法

このメソッドは、API バージョン 43.0 で導入されました。以前のバージョンでは使用できません。

obfuscateUser メソッドを使用して、組織のユーザーの個人情報を保護します。呼び出されたときに、ユーザーのオブジェクトデータは完全にスクランブルされて、ランダムな文字列に置換されます。ユーザーの詳細ページは存在しますが、項目には意味のない文字列が含まれます。Salesforce でユーザーを削除することはできず、無効化のみが可能なため、個人データは単に難読化 (スクランブル) されます。つまり、ユーザーレコードはデータベースに残され、このメソッドは論理削除を実行します。

このメソッドを使用する場合は注意が必要です。ユーザーのデータは匿名となり、復元できません。

メモ

考慮事項

  • このメソッドでは、[設定] の組織のユーザー管理設定 [特定のユーザーのデータをスクランブル] が有効になっている必要があります。
  • このメソッドはユーザーオブジェクトの標準項目に影響します (ユーザー ID、タイムゾーン、ロケール、プロファイルなどの一部の項目を除く)。
  • ユーザーに確認を送信する場合、ユーザーの ID と後処理のための他の属性 (メールアドレスなど) を書き留めることをお勧めします。
  • このメソッドはユーザーオブジェクトのみを変更します。ユーザーと他のオブジェクト間の関連付けは削除されますが、他のオブジェクトは変更されません。たとえば、連絡先、ThirdPartyAccountLink (TPAL)、ユーザーパスワード認証 (UPA) オブジェクトは変更されずに維持されます。

このメソッドを使用しても、メール変更通知はトリガーされないことをシステム管理者に伝えてください。

メモ

このメソッドは、ユーザーの個人データとプライバシー保護の取り組みの一環です。ユーザーデータを積極的に保護するために実行できることについての詳細は、Salesforce ヘルプの「データ保護とプライバシー」を参照してください。

obfuscateUser(userId)

Salesforce で個人データが認識されることをユーザーが望まなくなったときに、要求に応じてユーザーのデータをスクランブルします。ユーザーに対してこのメソッドを呼び出すと、データが匿名になり、そのデータを復元できなくなります。

署名

public static void obfuscateUser(Id userId)

パラメーター

userId
型: Id
このメソッドでスクランブルするデータを所有するユーザーの ID。

戻り値

型: void

使用方法

このメソッドは、API バージョン 43.0 で導入されました。以前のバージョンでは使用できません。

obfuscateUser メソッドを使用して、組織のユーザーの個人情報を保護します。呼び出されたときに、ユーザーのオブジェクトデータは完全にスクランブルされて、ランダムな文字列に置換されます。ユーザーの詳細ページは存在しますが、項目には意味のない文字列が含まれます。Salesforce でユーザーを削除することはできず、無効化のみが可能なため、個人データは単に難読化 (スクランブル) されます。つまり、ユーザーレコードはデータベースに残され、このメソッドは論理削除を実行します。

このメソッドを使用する場合は注意が必要です。ユーザーのデータは匿名となり、復元できません。

メモ

考慮事項

  • このメソッドでは、[設定] の組織のユーザー管理設定 [特定のユーザーのデータをスクランブル] が有効になっている必要があります。
  • このメソッドはユーザーオブジェクトの標準項目に影響します (ユーザー ID、タイムゾーン、ロケール、プロファイルなどの一部の項目を除く)。
  • ユーザーに確認を送信する場合は、後処理のためにユーザーの ID とその他の属性 (メールアドレスなど) をメモしておくことをお勧めします。
  • このメソッドはユーザーオブジェクトのみを変更します。ユーザーと他のオブジェクト間の関連付けは削除されますが、他のオブジェクトは変更されません。たとえば、連絡先、ThirdPartyAccountLink (TPAL)、ユーザーパスワード認証 (UPA) オブジェクトは変更されずに維持されます。

このメソッドを使用しても、メール変更通知はトリガーされないことをシステム管理者に伝えてください。

メモ

このメソッドは、ユーザーの個人データとプライバシー保護の取り組みの一環です。ユーザーデータを積極的に保護するために実行できることについての詳細は、Salesforce ヘルプの「データ保護とプライバシー」を参照してください。

ObfuscateUser コード例

1public class UserManagementController{
2    public List <User> users {get; set;}
3    
4    public UserManagementController()
5    {
6        Profile p = [select id from profile where name = 'Customer Community User'];
7        
8        users = [select username, id from User where profileId=:p.id AND isactive=true];
9    }
10
11    //Use method with extreme caution. Data can't be recovered.   
12    @InvocableMethod(label='User Management' description='Obfuscate User data and more')
13    static public void obfuscate(List<User> users)
14    {
15        String uid = ApexPages.currentPage().getParameters().get('uid');
16        
17        if(uid == null)
18            return;
19        
20        User u = [select contactId from user where id=:uid];
21            
22        System.UserManagement.obfuscateUser(uid);
23    }
24}

registerVerificationMethod(method, startUrl)

ID 検証方法を登録します。検証方法として登録できるのは、時間ベースのワンタイムパスワード (TOTP)、メールまたはテキストの確認コード、Salesforce Authenticator、U2F 準拠のセキュリティキーです。エンドユーザー自身が検証方法を登録します。

署名

public static System.PageReference registerVerificationMethod(Auth.VerificationMethod method, String startUrl)

パラメーター

method
型: Auth.VerificationMethod
ユーザーの ID の検証に使用する検証方法。
startUrl
型: String
ログイン後にユーザーに表示するページへのパス。

戻り値

型: System.PageReference

使用方法

このメソッドを使用すると、ユーザーは多要素認証 (MFA) などの ID 検証を完了したり、パスワードなしで Experience Cloud サイトにログインしたりできます。ユーザーは、ログイン時に自分の ID を検証するためにこれらのメソッドを登録します。モバイル重視のパスワードなしのログインを実装するときは、カスタム登録ページを作成します。「VerifyPasswordlessLogin」を参照してください。

registerVerificationMethod で返された PageReference は、ユーザーを Salesforce の検証ページにリダイレクトします。ユーザーは、正しいコードを入力すると、開始 URL で指定された Experience Cloud サイトページにリダイレクトされます。次に例を示します。

1PageReference pr = System.UserManagement.registerVerificationMethod(Auth.VerificationMethod.TOTP,startUrl);
2PageReference p =  System.UserManagement.deregisterVerificationMethod(userId,Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);

このメソッドは API バージョン 43.0 以降で使用できます。

ユーザーが詳細ページで携帯番号を追加または更新した場合、セキュリティ対策として、ユーザーは再度ログインして ID を検証する必要があります。その結果、アプリケーションに保存されていない変更は失われます。このセキュリティ対策を無効にするには、Salesforce サポートにお問い合わせください。

メモ

sendAsyncEmailConfirmation(userId, emailTemplateId, networkId, startUrl)

ユーザーのメールアドレスに検証用のメールメッセージを送信します。このメッセージには、ユーザーが後でメールアドレスを検証するためにクリックする検証リンク (URL) が含まれます。メール検証を一括で送信できます。

署名

public static Boolean sendAsyncEmailConfirmation(String userId, String emailTemplateId, String networkId, String startUrl)

パラメーター

userId
型: String
確認メールを受信するユーザーの ID。
emailTemplateId
型: String
検証リンクが定義されているメールテンプレートの ID。
networkId
型: String
Experience Cloud サイトの ID。
startUrl
型: String
ユーザーは検証後にこのページにリダイレクトされ、パラメーターとして成功メッセージまたはエラーメッセージが渡されます。null の場合、ユーザーはログインページにリダイレクトされます。

戻り値

型: Boolean

メールメッセージの送信が成功したか失敗したかを示します。

使用方法

非同期メールメッセージを送信すると、ユーザーが所有する有効なメールアドレスで登録されていることを確認できるため、お勧めします。検証リンクが記載されたメールの受信者を特定するには、ユーザーの詳細ページで [ユーザーの検証済みメール] 項目が true に設定されているかどうかを確認します。この情報は、TwoFactorMethodsInfo API からも得られます。

顧客およびパートナーに非同期メール検証を送信して、メールアドレスを検証します。これらのユーザーはメールの OTP (パスワードなしのログイン) でログインする前にメールアドレスを検証する必要があります。

エラーコードと説明はクエリパラメーターとして渡されるため、カスタムランディングページを作成するときにエラーを処理できます。

例

1System.UserManagement.sendAsyncEmailConfirmation('005RM000001a0Ox', 
2'00XRM000000hxnG','0DBRM000000015i', '/s/contactsupport');

verifyPasswordlessLogin(userId, method, identifier, code, startUrl)

カスタム検証ページを使用するパスワードなしのログイン中に検証を実行します (Visualforce のみ)。ログインしようとしているユーザーが正常に確認コードを入力すると、そのユーザーはログインされます。

署名

public static Auth.VerificationResult verifyPasswordlessLogin(Id userId, Auth.VerificationMethod method, String identifier, String code, String startUrl)

パラメーター

userId
型: Id
ログインするユーザーの ID。
method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL または SMS。
identifier
型: String
initPasswordlessLogin メソッドから受信した検証試行の ID。
code
型: String
ユーザーの ID の検証に使用するコード。
startUrl
型: String
ログインに成功した後にユーザーが移動するページ。

戻り値

型: Auth.VerificationResult

検証の結果。表示されたメッセージと、ユーザーが確認コードを正しく入力したときのユーザーの移動先が含まれています。

使用方法

このメソッドをコールし、パスワードなしログイン認証プロセスを開始します。検証方法と検証コードが確認されます。また、ID が initPasswordlessLogin によって返されるものと同じであることが確認されます。

例

Auth.VerificationResult の例を参照してください。

verifyRegisterVerificationMethod(code, method)

ID 検証プロセスをカスタマイズするときの検証方法として、ユーザーのメールアドレスまたは電話番号の登録を完了します。

署名

public static String verifyRegisterVerificationMethod(String code, Auth.VerificationMethod method)

パラメーター

code
型: String
ユーザーの ID の検証に使用するコード。
method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL または SMS。

戻り値

型: String

ユーザーが入力した確認コードが正しくない場合は、メソッドからエラーメッセージが返されます。

使用方法

verifyRegisterVerificationMethod をコールすると、ユーザーの検証方法を登録するプロセスが実行されます。このメソッドは、ユーザーが正しい確認コードを入力したかどうかを検査します。確認コードが正しければ、メソッドは次を実行します。
  • ユーザーが正しい確認コードを入力したことを確認します。
  • ユーザーの詳細ページから、ユーザーの検証方法の状況を更新します (検証ビットを設定します)。
  • 検証方法がレコードに追加されていることを確認するメールをユーザーに送信します。

確認コードが正しくない場合は、エラーメッセージが返されます。

ユーザーがメールアドレスを登録後に変更する場合、initRegisterVerificationMethod メソッドと verify RegisterVerificationMethod メソッドは使用しないでください。メールアドレスを変更した場合の自動 ID 検証を有効にするには、[ID 検証] 設定ページから、項目 [メールアドレスの変更に対してメール確認が必要 (エクスペリエンスビルダーサイトのユーザーに適用)] を選択します。

メモ

例

ユーザーの電話番号を検証方法として登録するコードの例を次に示します。ユーザーが Visualforce ページで確認コードを入力すると、registerUser() が呼び出されます。このメソッドは、検証方法とユーザーの電話番号を登録するユーザーのユーザー ID を取得します。また、ユーザーの登録状況を取得して、電話番号がすでに検証されているかどうかを検査します。ユーザーが別の電話番号で登録されている場合は、その電話番号が更新されます。

1public void registerUser() {
2        try {
3            exceptionText='';
4            String userId = UserInfo.getUserId();
5            User u = [Select MobilePhone, Id from User Where Id=:userId];
6             currPhone = u.MobilePhone;
7             mobilePhone = getFormattedSms(mobilePhone); 
8           if (mobilePhone != null && mobilePhone != '') {
9           u.MobilePhone = mobilePhone;
10           update u;
11            // We're updating the email and phone number before verifying. Roll back  
12           //  the change in the verify API if it is unsuccessful.
13            exceptionText = System.
14            UserManagement.initRegisterVerificationMethod(Auth.VerificationMethod.SMS);
15            if(exceptionText!= null && exceptionText!=''){
16                isInit = false;
17                showInitException = true;
18            } else {
19                 isInit = false;
20                 isVerify = true;
21            }
22            } else {
23                showInitException = true;
24            }
25        } catch (Exception e) {
26            exceptionText = e.getMessage();
27            isInit = false;
28            showInitException = true;
29        }
30    }
31
32public void verifyUser() {
33    // Take the user’s input for the code sent to their phone number
34    exceptionText = System.UserManagement.
        verifyRegisterVerificationMethod(code, Auth.VerificationMethod.SMS);
35    if(exceptionText != null && exceptionText !=''){
36    showInitException = true;
37    } else {
38            //Success    
39    }
40}

verifySelfRegistration(method, identifier, code, startUrl)

Experience Cloud サイトのセルフ登録用にカスタムの (Visualforce) 検証ページを作成する場合に、検証を実行します。登録を行っている人が検証コードを正常に入力すると、ユーザーが作成されてログインされます。

署名

public static Auth.VerificationResult verifySelfRegistration(Auth.VerificationMethod method, String identifier, String code, String startUrl)

パラメーター

method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL または SMS。
identifier
型: String
initSelfRegistration メソッドから受信した一意の識別子。
code
型: String
ユーザーの ID の検証に使用するコード。
startUrl
型: String
セルフ登録が成功した後にユーザーが移動するページ。

戻り値

型: Auth.VerificationResult

検証の結果。これには表示されたメッセージと、ユーザーが確認コードを正しく入力したときのユーザーの移動先が含まれています。

使用方法

デフォルトでは、ユーザーがメールアドレスまたは電話番号で Experience Cloud サイトにサインアップすると、Salesforce から検証コードが送信され、検証ページが生成されます。この検証ページでは、ユーザーが自分の身元を確認するための確認コードを入力します。Salesforce で生成された検証ページは、Visualforce で作成したカスタム検証ページと置き換えることができます。そして、Apex メソッドを使用して検証プロセスを呼び出します。

まず、initSelfRegistration メソッドを呼び出します。このメソッドは、作成するユーザーの ID を返します。次に、この verifySelfRegistration メソッドをコールして検証プロセスを完了します。ユーザーが確認コードを正しく入力すると、ユーザーが作成され、startURL で指定されたページに転送されます。

このメソッドは、確認状況を含んだ検証結果を返します。さらに、ユーザーが作成された場合は、セッション ID を返します。検証方法が SMS の場合、ユーザーオブジェクトには適切な形式の携帯番号 (国コード、スペース、電話番号の順、例: +1 1234567890) が含まれている必要があります。電話番号を正しく書式設定するには、System.UserManagement.formatPhoneNumber を使用します。

例

次のコードには、新しいユーザーを登録するための検証の結果が含まれています。

1String id = System.UserManagement.initSelfRegistration​
2          (Auth.VerificationMethod.SMS, user);
3        Auth.VerificationResult res = System.UserManagement.verifySelfRegistration​
4          (Auth.VerificationMethod.SMS, id, ‘123456’, null);
5        if(res.success == true){
6     //redirect
7}

verifyVerificationMethod(identifier, code, method)

メール、電話 (SMS)、Salesforce Authenticator パスワード、時間ベースのワンタイムパスワード (TOTP) 検証方法の検証サービスを完了します。

署名

public static VerificationResult verifyVerificationMethod(String identifier, String code, Auth.VerificationMethod method)

パラメーター

identifier
型: String
initVerificationMethod から返された EMAIL、SMS、および SALESFORCE_AUTHENTICATOR の識別子。
code
型: String
EMAIL、SMS、または PASSWORD について、ユーザーの ID を検証するために使用されるコード。
method
型: Auth.VerificationMethod
ユーザーの ID を検証するために使用される方法。EMAIL、PASSWORD、SALESFORCE_AUTHENTICATOR、SMS または TOTP が有効になります。

戻り値

型: VerificationResult

使用方法

このメソッドと、対応する initVerificationMethod を一緒に使用することで、EMAIL、SMS、SALESFORCE_AUTHENTICATOR などの検証メソッドの検証サービスをカスタマイズできます。また、このメソッドを単独で使用することで、PASSWORD と TOTP の検証方法の完全な検証サービスを提供できます。

このメソッドは、ユーザーが正しい確認コードまたはパスワードを入力したかどうかを検査します。確認コードまたはパスワードが正しい場合、このメソッドはユーザーの ID を検証します。

確認コードまたはパスワードが有効ではない場合、エラーメッセージが返されます。

例

この例では、メールを使用した多要素認証の例を示します。

1public void initVerification() {
2// user will receive code on their registered verified email 
3 identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.EMAIL);
4}
5
6public Auth.VerificationResult verifyVerification() {
7// requiring identifier from the initVerification
8// the code will need to be entered in this method
9return UserManagement.verifyVerificationMethod(identifier, code , Auth.VerificationMethod.EMAIL);
10}

次の 2 つの例は、パスワードと TOTP 検証に verifyVerificationMethod のみを使用した多要素認証を示しています。

1public Auth.VerificationResult verifyVerification() {
2// user will enter their password as a param in the verifyVerificationMethod for password verification method
3return UserManagement.verifyVerificationMethod('', password , Auth.VerificationMethod.PASSWORD);
4}
1public Auth.VerificationResult verifyVerification() {
2// user will enter their registered time-based one-time password (TOTP) code (token)
3return UserManagement.verifyVerificationMethod('', code , Auth.VerificationMethod.TOTP);
4}