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

Newer Version Available

This content describes an older version of this product. View Latest

UserManagement クラス

エンドユーザの管理 (検証方法の登録や、Salesforce でエンドユーザが認識されないようにするための要求の処理など) を行うためのメソッドがあります。

名前空間

System

使用方法

register および deregister メソッドは、ID 検証方法を登録および登録解除するために使用します。obfuscateUser メソッドは、ユーザの要求に応じてユーザオブジェクトデータをスクランブルするために使用します。formatPhoneNumber メソッドは、電話番号を正しく書式設定するために使用します。

このクラスは、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 で導入されました。以前のバージョンでは使用できません。

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 確認に使用されます。たとえば、携帯電話番号は他の 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。

使用方法

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

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

メモ

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

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

次に、verifyPasswordlessLogin をコールします。ユーザが検証コードを正しく入力している場合には、ユーザがログインに成功します。

ユーザがパスワードなしでログインできるようになるには、事前にメールアドレスまたは電話番号で ID を検証する必要があります。ID 検証は、ユーザインターフェースと API のいずれから実行するかを指定できます。

メモ

initSelfRegistration(method, user)

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

署名

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

パラメータ

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

戻り値

型: String

登録試行の ID。

使用方法

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

まず、initSelfRegistration をコールし、認証チャレンジを開始します。登録の成功時に挿入されるユーザオブジェクトを含めます。initSelfRegistration メソッドによって、登録試行の ID が返されます。

次に、verifySelfRegistration をコールします。ユーザが検証コードを正しく入力している場合には、ユーザがログインに成功します。

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 {getset;}
3    
4    public UserManagementController()
5    {
6        Profile p = [select id from profile where name = 'Customer Community User'];
7        
8        users = [select usernameid 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        if(u.contactId != null)
25        {
26            List <Contact> contacts = [select id from Contact where id=:u.contactId LIMIT 1];
27            if (contacts == null || contacts.isEmpty() == true)
28            return;
29                
30            delete contacts;
31        }
32    }
33}

registerVerificationMethod(method, startUrl)

ID 検証方法を登録します。検証方法には、時間ベースのワンタイムパスワード、メールまたはテキストのワンタイムパスワード、Salesforce Authenticator、U2F などがあります。エンドユーザが各自の検証方法を登録します。

署名

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

パラメータ

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

戻り値

型: System.PageReference

使用方法

このメソッドを使用して、2FA などの ID 検証を完了するか、パスワードなしでコミュニティにログインします。ユーザは、ログインするときに ID を検証するこれらの方法に登録します。開発者は、モバイルで使いやすいパスワードなしのログインを実装する場合にカスタム登録ページを作成します。「passwordlessLogin」を参照してください。

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

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
コミュニティの 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

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

使用方法

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

verifySelfRegistration(method, identifier, code, startUrl)

コミュニティのセルフ登録用にカスタムの (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

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

使用方法

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

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

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

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