SessionManagement クラス
名前空間
SessionManagement のメソッド
finishLoginDiscovery(method, userId)
署名
public static System.PageReference finishLoginDiscovery(Auth.LoginDiscoveryMethod method, Id userId)
パラメーター
- method
- 型: Auth.LoginDiscoveryMethod LoginDiscoveryMethod Enum
- [私のドメイン] のログイン検出に使用する確認方法。
- userId
- 型: Id
- ユーザーをログインするために使用する ID。ユーザーは有効である必要があります。
戻り値
使用方法
このメソッドは、MyDomainLoginDiscoveryHandler インターフェースを実装し、ユーザーを認証メカニズムに移動してログインさせる場合に含めます。ユーザーがログインページにユーザー名を入力すると、認証用のパスワードページへ移動します。ユーザーが Lightning Login に登録されている場合、ユーザーは認証のために Salesforce Authenticator に転送されます。ユーザーの SSO が有効になっている場合、ユーザーは認証のために適切な ID プロバイダー (IdP) に転送されます。
コールするユーザーには「ユーザーの管理」権限が必要です。渡したユーザーが凍結中または無効な場合、このメソッドで例外が発生します。
MyDomainLoginDiscoveryHandler インターフェースを実装した後、[私のドメイン] の [設定] ページからログイン検出ハンドラーを登録します。[認証設定] で、Apex クラスのリストからこのハンドラーを選択します。
finishLoginFlow()
署名
public static System.PageReference finishLoginFlow()
戻り値
使用方法
finishLoginFlow(startUrl)
署名
public static System.PageReference finishLoginFlow(String startUrl)
パラメーター
- startUrl
- 型: String
- Experience Cloud サイトへのアクセス時にユーザーに表示するページへのパス。
戻り値
使用方法
generateVerificationUrl(policy, description, destinationUrl)
署名
public static String generateVerificationUrl(Auth.VerificationPolicy policy, String description, String destinationUrl)
パラメーター
- policy
- 型: Auth.VerificationPolicy
- ユーザーのセッションの ID 検証を開始するのに必要なセッションセキュリティポリシー。たとえば、ポリシーに高保証レベルのセッションセキュリティが設定されていて、ユーザーの現在のセッションは標準レベルのセッションセキュリティである場合、ユーザーのセッションは ID 検証が正常に終了すると高保証に引き上げられます。[設定] ユーザーインターフェースでは、この値は [ID 検証履歴] の [トリガー基準] 列に表示されます。
- description
- 型: String
- ID 検証を必要とするアクティビティを説明するカスタムの説明 (「購入を完了してチェックアウト」など)。このテキストは、Salesforce で、および Salesforce Authenticator バージョン 2 以降を使用している場合は Salesforce Authenticator モバイルアプリケーションで、ユーザーが自分の ID を検証するときに表示されます。さらに、[設定] ユーザーインターフェースでは、このテキストは [ID 検証履歴] の [アクティビティメッセージ] 列に表示されます。
- destinationUrl
- 型: String
- ID 検証後にユーザーをリダイレクトする相対または絶対 Salesforce URL (/apex/mypage など)。ユーザーは、ID 検証フローが完了すると、成功したかどうかに関係なく destinationUrl にリダイレクトされます。たとえば、ユーザーが ID 確認に応答しないことを選択してキャンセルした場合でも、ユーザーは destinationUrl にリダイレクトされます。ベストプラクティスとして、このページのコードによって、セキュリティポリシーに適合していること (さらにユーザーがブラウザーに手動で URL を入力したのではないこと) が手動でチェックされるようにします。たとえば、policy が高保証の場合、リダイレクト先ページでは、アクセスを許可する前にユーザーのセッションが高保証であることを確認します。
使用方法
- ユーザーがすでに時間ベースのワンタイムパスワード (TOTP) を使用して ID を確認するように登録されている場合、ユーザーはワンタイムパスワード ID 検証フローにリダイレクトされて、コードを入力するように求められます。
- ユーザーがどの検証方法 (ワンタイムパスワードや Salesforce Authenticator バージョン 2 以降など) にも登録されていない場合、ユーザーは、Salesforce Authenticator をダウンロードして使用し、ID を検証するように要求されます。ユーザーが異なる検証方法を選択することもできます。
getCurrentSession()
署名
public static Map<String, String> getCurrentSession()
使用方法
このメソッドを呼び出す Apex テストメソッドを作成すると、「Unexpected Exception: Current session unavailable (予期せぬ例外: 現在のセッションは利用できません)」などのエラーでテストが失敗します。テストが実行されているコンテキストにはセッションがないためエラーが発生します。
セッションを再び使用すると、Salesforce が LoginHistoryId を最新ログインの値で更新します。
例
次の例は、getCurrentSession() で返される対応付け内の名前-値ペアを示します。UsersId では、AuthSession オブジェクト内の対応する項目の名前と一致させるために、名前に「s」が含まれます。
1{
2SessionId=0Ak###############,
3UserType=Standard,
4ParentId=0Ak###############,
5NumSecondsValid=7200,
6LoginType=SAML Idp Initiated SSO,
7LoginDomain=null,
8LoginHistoryId=0Ya###############,
9Username=user@domain.com,
10CreatedDate=Wed Jul 30 19:09:29 GMT 2014,
11SessionType=Visualforce,
12LastModifiedDate=Wed Jul 30 19:09:16 GMT 2014,
13LogoutUrl=https://google.com,
14SessionSecurityLevel=STANDARD,
15UsersId=005###############,
16SourceIp=1.1.1.1
17}getLightningLoginEligibility(userId)
署名
public static Auth.LightningLoginEligibility getLightningLoginEligibility(Id userId)
パラメーター
- userId
- 型: Id
- ログインするユーザーの ID。
例
1Auth.LightningLoginEligibility eligibility =
2 Auth.SessionManagement.getLightningLoginEligibility(id);
3if (eligibility == Auth.LightningLoginEligibility.ELIGIBLE) {
4 // success
5}getQrCode()
署名
public static Map<String, String> getQrCode()
使用方法
secret は、20 バイトの共有鍵の base32 符号化文字列です。
例
次に、QR コードを要求する方法の例を示します。
1public String getGetQRCode() {
2 return getQRCode();
3 }
4 public String getQRCode() {
5 Map<String, String> codeResult = Auth.SessionManagement.getQrCode();
6 String result = 'URL: '+codeResult.get('qrCodeUrl') + ' SECRET: ' + codeResult.get('secret');
7 return result;
8 }次に、返された対応付けの例を示します。
1{qrCodeUrl=https://www.salesforce.com/secur/qrCode?w=200&h=200&t=tf&u=user%0000000000.com&s=AAAAA7B5BBBB5AAAAAAA66BBBB,
2 secret=AAAAA7B5AAAAAA5BBBBBBBBB66AAA}getRequiredSessionLevelForProfile(profileId)
署名
public static Auth.SessionLevel getRequiredSessionLevelForProfile(String profileId)
パラメーター
- profileId
- 型: String
-
15 文字のプロファイル ID。
戻り値
ID profileId のプロファイルでログイン時に必要なセッションセキュリティレベル。各レベルの割り当ては [セッションの設定] でカスタマイズできます。たとえば、高保証レベルが多要素認証 (MFA) または特定の ID プロバイダーで認証されるユーザーにのみ適用されるように設定できます。
inOrgNetworkRange(ipAddress)
isIpAllowedForProfile(profileId, ipAddress)
署名
public static Boolean isIpAllowedForProfile(String profileId, String ipAddress)
戻り値
型: Boolean
使用方法
| 信頼済み IP 範囲が存在するか? | ユーザーは信頼済み IP 範囲内か? | 戻り値 |
|---|---|---|
| はい | はい | true |
| はい | いいえ | false |
| いいえ | N/A | true |
setSessionLevel(level)
署名
public static Void setSessionLevel(Auth.SessionLevel level)
パラメーター
- level
- 型: Auth.SessionLevel
- ユーザーに割り当てるセッションセキュリティレベル。各レベルの意味は、各組織の [セッションの設定] でカスタマイズできます。たとえば、多要素認証 (MFA) または特定の ID プロバイダーで認証されたユーザーにのみ [高保証] レベルを適用するように設定できます。
戻り値
型: Void
使用方法
このメソッドを呼び出す Apex テストメソッドを作成すると、「Unexpected Exception: Current session unavailable (予期せぬ例外: 現在のセッションは利用できません)」などのエラーでテストが失敗します。テストが実行されているコンテキストにはセッションがないためエラーが発生します。
例
次に、セッションレベルを設定するためのクラスの例を示します。
1public class RaiseSessionLevel{
2 public void setLevelHigh() {
3 Auth.SessionManagement.setSessionLevel(Auth.SessionLevel.HIGH_ASSURANCE);
4 }
5 public void setLevelStandard() {
6 Auth.SessionManagement.setSessionLevel(Auth.SessionLevel.STANDARD);
7 }
8}validateTotpTokenForKey(sharedKey, totpCode)
署名
public static Boolean validateTotpTokenForKey(String sharedKey, String totpCode)
パラメーター
戻り値
型: Boolean
使用方法
validateTotpTokenForKey(totpSharedKey, totpCode, description)
署名
public static Boolean validateTotpTokenForKey(String totpSharedKey, String totpCode, String description)
パラメーター
- totpSharedKey
- 型: String
- 共有 (秘密) 鍵。totpSharedKey は、20 バイトの共有鍵の base32 符号化文字列である必要があります。
- totpCode
- 型: String
- 検証する時間ベースのワンタイムパスワード (TOTP) コード。
- description
- 型: String
- ID 検証を必要とするアクティビティを説明するカスタムの説明 (「購入を完了してチェックアウト」など)。[設定] ユーザーインターフェースでは、このテキストは [ID 検証履歴] の [アクティビティメッセージ] 列に表示されます。description は 128 文字以下にする必要があります。それより長い値を指定すると、128 文字に切り捨てられます。
戻り値
型: Boolean
使用方法
validateTotpTokenForUser(totpCode, description)
署名
public static Boolean validateTotpTokenForUser(String totpCode, String description)
パラメーター
- totpCode
- 型: String
- 検証する時間ベースのワンタイムパスワード (TOTP) コード。
- description
- 型: String
- ID 検証を必要とするアクティビティを説明するカスタムの説明 (「購入を完了してチェックアウト」など)。このテキストは、Salesforce で、および Salesforce Authenticator バージョン 2 以降を使用している場合は Salesforce Authenticator モバイルアプリケーションで、ユーザーが自分の ID を検証するときに表示されます。さらに、[設定] ユーザーインターフェースでは、このテキストは [ID 検証履歴] の [アクティビティメッセージ] 列に表示されます。description は 128 文字以下にする必要があります。それより長い値を指定すると、128 文字に切り捨てられます。
戻り値
型: Boolean
使用方法
verifyDeviceFlow(userCode, startUrl)
署名
public static System.PageReference verifyDeviceFlow(String userCode, String startUrl)