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

Newer Version Available

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

SessionManagement クラス

現在のセッションでユーザの ID の検証、カスタムログインフローの作成、セキュリティレベルのカスタマイズ、および信頼済み IP 範囲の定義を行うためのメソッドが含まれます。

名前空間

Auth

SessionManagement のメソッド

SessionManagement のメソッドは次のとおりです。すべてのメソッドが静的です。これらのメソッドを使用して、ユーザの ID 検証フローをカスタマイズしたり、時間ベースのワンタイムパスワード (TOTP) アプリケーション (Google Authenticator など) の使用を管理したり、カスタムログインフローを作成したりします。他のメソッドは、ユーザの受信 IP アドレスを、組織またはプロファイルの信頼済み IP 範囲設定に対して検証します。

finishLoginDiscovery(method, userId)

[私のドメイン] のログイン検出ログインプロセスを完了します。

署名

public static System.PageReference finishLoginDiscovery(Auth.LoginDiscoveryMethod method, Id userId)

パラメータ

method
型: Auth.LoginDiscoveryMethod LoginDiscoveryMethod Enum
[私のドメイン] のログイン検出に使用する確認方法。
userId
型: Id
ユーザをログインするために使用する ID。ユーザは有効である必要があります。

戻り値

型: System.PageReference

使用方法

このメソッドは、MyDomainLoginDiscoveryHandler インターフェースを実装し、ユーザを認証メカニズムに移動してログインさせる場合に含めます。ユーザがログインページにユーザ名を入力すると、認証用のパスワードページへ移動します。ユーザが Lightning Login に登録されている場合、ユーザは認証のために Salesforce Authenticator に転送されます。ユーザの SSO が有効になっている場合、ユーザは認証のために適切な ID プロバイダ (IdP) に転送されます。

コールするユーザには「ユーザの管理」権限が必要です。渡したユーザが凍結中または無効な場合、このメソッドで例外が発生します。

MyDomainLoginDiscoveryHandler インターフェースを実装した後、[私のドメイン] の [設定] ページからログイン検出ハンドラを登録します。[認証設定] で、Apex クラスのリストからこのハンドラを選択します。

finishLoginFlow()

Visualforce ページのログインフロープロセスを完了し、ユーザをデフォルトのホームページにリダイレクトします。

署名

public static System.PageReference finishLoginFlow()

戻り値

型: System.PageReference

使用方法

プログラムでログインフローを作成する場合、Visualforce ページログインフローの Apex コントローラにこのメソッドを含めます。このメソッドは、ログインフローが完了したことを示し、ユーザを Experience Cloud サイトのデフォルトのホームページにリダイレクトします。ログインプロセスは、ユーザがプロセスを完了するまで制限されたセッションで実行されます。このメソッドのコールは、ログインフローが完了したことを示し、制限を解除し、ユーザに Experience Cloud サイトへのフルアクセス権を付与します。

finishLoginFlow(startUrl)

Visualforce ページのログインフロープロセスを完了し、ユーザを指定の開始 URL にリダイレクトします。

署名

public static System.PageReference finishLoginFlow(String startUrl)

パラメータ

startUrl
型: String
Experience Cloud サイトへのアクセス時にユーザに表示するページへのパス。

戻り値

型: System.PageReference

使用方法

プログラムでログインフローを作成する場合、Visualforce ページログインフローの Apex コントローラにこのメソッドを含めます。このメソッドは、ログインフローが完了したことを示し、ユーザを Experience Cloud サイトの指定された場所にリダイレクトします。ログインプロセスは、ユーザがプロセスを完了するまで制限されたセッションで実行されます。このメソッドのコールは、ログインフローが完了したことを示し、制限を解除し、ユーザに Experience Cloud サイトへのフルアクセス権を付与します。

generateVerificationUrl(policy, description, destinationUrl)

ユーザが登録している検証方法を使用するユーザ ID 検証フローを開始し、ID 検証画面への URL を返します。たとえば、機密の取引先詳細が表示されるカスタム Visualforce ページがある場合、ユーザがそのページを表示する前に ID 検証を要求することができます。

署名

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 が高保証の場合、リダイレクト先ページでは、アクセスを許可する前にユーザのセッションが高保証であることを確認します。

戻り値

型: String

ユーザが ID を検証するためにリダイレクトされる URL。

使用方法

  • ユーザがすでに時間ベースのワンタイムパスワード (TOTP) を使用して ID を確認するように登録されている場合、ユーザはワンタイムパスワード ID 検証フローにリダイレクトされて、コードを入力するように求められます。
  • ユーザがどの検証方法 (ワンタイムパスワードや Salesforce Authenticator バージョン 2 以降など) にも登録されていない場合、ユーザは、Salesforce Authenticator をダウンロードして使用し、ID を検証するように要求されます。ユーザが異なる検証方法を選択することもできます。

getCurrentSession()

現在のセッションの属性の対応付けを返します。

署名

public static Map<String, String> getCurrentSession()

戻り値

型: Map<String, String>

使用方法

対応付けには、親セッションが存在すれば (現在のセッションがキャンバスアプリケーション用の場合など)、その 18 文字の ID である ParentId 値が含まれます。現在のセッションに親がない場合、この値は null になります。対応付けには、現在のセッションに割り当てられた LogoutUrl も含まれます。

このメソッドを呼び出す 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)

[私のドメイン] で組織を設定し、ログイン検出ページ種別を使用している場合、Lightning Login でログインしているユーザの資格状況を返します。このメソッドを使用してユーザをカスタムログインフローにリダイレクトします。たとえば、ログイン試行の後に使用して、ユーザに Lightning Login の資格がない場合はパスワードフローにリダイレクトします。

署名

public static Auth.LightningLoginEligibility getLightningLoginEligibility(Id userId)

パラメータ

userId
型: Id
ログインするユーザの ID。

戻り値

型: Auth.LightningLoginEligibility

現在の資格状況を返します。

1Auth.LightningLoginEligibility eligibility = 
2    Auth.SessionManagement.getLightningLoginEligibility(id);
3if (eligibility == Auth.LightningLoginEligibility.ELIGIBLE) {
4    // success
5}

getQrCode()

多要素認証 (MFA) 用の認証アプリケーションまたはデバイスを設定するための、QR (Quick Response) コードと時間ベースのワンタイムパスワード (TOTP) の共有秘密への URL が含まれる対応付けを返します。

署名

public static Map<String, String> getQrCode()

戻り値

型: Map<String, String>

使用方法

QR コードは、返された秘密と現在のユーザのユーザ名を符号化します。キーは qrCodeUrlsecret です。このメソッドをコールしても、ユーザの状態は変化せず、ユーザから状態は読み込まれません。このメソッドは、コールされるたびにまったく新しい秘密を返します。また、その秘密をどこにも保存せず、TOTP トークンを検証しません。システム管理者は、TOTP トークンを秘密で検証した後、ユーザの値を明示的に保存する必要があります。

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。

戻り値

型: Auth.SessionLevel

ID profileId のプロファイルでログイン時に必要なセッションセキュリティレベル。各レベルの割り当ては [セッションの設定] でカスタマイズできます。たとえば、高保証レベルが多要素認証 (MFA) または特定の ID プロバイダで認証されるユーザにのみ適用されるように設定できます。

ignoreForConcurrentSessionLimit(sessions)

このメソッドは、Salesforce の内部使用のために予約されています。

署名

public static Map<String,String> ignoreForConcurrentSessionLimit(Object sessions)

パラメータ

sessions
型: Object

戻り値

型: Map<String, String>

inOrgNetworkRange(ipAddress)

特定の IP アドレスが、組織の [ネットワークアクセス] 設定に基づいた組織の信頼済み IP 範囲内がどうかを示します。

署名

public static Boolean inOrgNetworkRange(String ipAddress)

パラメータ

ipAddress
型: String
検証する IP アドレス。

戻り値

型: Boolean

使用方法

信頼済み IP 範囲が定義されていない場合は false を返し、IP アドレスが無効な場合は例外を発生させます。
信頼済み IP 範囲が存在するか? ユーザは信頼済み IP 範囲内か? 戻り値
はい はい true
はい いいえ false
いいえ N/A false

isIpAllowedForProfile(profileId, ipAddress)

特定の IP アドレスが、特定のプロファイルの信頼済み IP 範囲内かどうかを示します。

署名

public static Boolean isIpAllowedForProfile(String profileId, String ipAddress)

パラメータ

profileId
型: String
現在のユーザのプロファイル ID である 15 文字の英数字文字列。
ipAddress
型: String
検証する IP アドレス。

戻り値

型: Boolean

使用方法

信頼済み IP 範囲が定義されていない場合は true を返し、IP アドレスまたはプロファイル ID が無効な場合は例外を発生させます。
信頼済み IP 範囲が存在するか? ユーザは信頼済み IP 範囲内か? 戻り値
はい はい true
はい いいえ false
いいえ N/A true

setSessionLevel(level)

ユーザの現在のセッションのセキュリティレベルを設定します。

署名

public static Void setSessionLevel(Auth.SessionLevel level)

パラメータ

level
型: Auth.SessionLevel
ユーザに割り当てるセッションセキュリティレベル。各レベルの意味は、各組織の [セッションの設定] でカスタマイズできます。たとえば、多要素認証 (MFA) または特定の ID プロバイダで認証されたユーザにのみ [高保証] レベルを適用するように設定できます。

戻り値

型: Void

使用方法

この設定は、Visualforce や UI アクセスなど、現在のセッションに関連付けられたすべてのセッションのセッションレベルに影響を与えます。

このメソッドを呼び出す 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)

非推奨。代わりに validateTotpTokenForKey(totpSharedKey, totpCode, description) を使用します。

署名

public static Boolean validateTotpTokenForKey(String sharedKey, String totpCode)

パラメータ

sharedKey
型: String
共有 (秘密) 鍵。sharedKey は、20 バイトの共有鍵の base32 符号化文字列である必要があります。
totpCode
型: String
検証する時間ベースのワンタイムパスワード (TOTP) コード。

戻り値

型: Boolean

使用方法

鍵が無効か存在しない場合、このメソッドではそれぞれ、無効なパラメータ値またはデータが見つからないという例外を発生させます。現在のユーザのトークン検証試行回数が制限の 10 回を超えた場合、このメソッドはセキュリティ例外を発生させます。

validateTotpTokenForKey(totpSharedKey, totpCode, description)

時間ベースのワンタイムパスワード (TOTP) コード (トークン) が特定の共有鍵に対して有効かどうかを示します。

署名

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

使用方法

鍵が無効か存在しない場合、このメソッドではそれぞれ、無効なパラメータ値またはデータが見つからないという例外を発生させます。現在のユーザのトークン検証試行回数が制限の 10 回を超えた場合、このメソッドはセキュリティ例外を発生させます。

validateTotpTokenForUser(totpCode)

非推奨。代わりに validateTotpTokenForUser(totpCode, description) を使用します。

署名

public static Boolean validateTotpTokenForUser(String totpCode)

パラメータ

totpCode
型: String
検証する時間ベースのワンタイムパスワード (TOTP) コード。

戻り値

型: Boolean

使用方法

現在のユーザに TOTP コードがない場合、このメソッドは例外を発生させます。現在のユーザの検証試行回数が制限を超えた場合、このメソッドは例外を発生させます。

validateTotpTokenForUser(totpCode, description)

時間ベースのワンタイムパスワード (TOTP) コード (トークン) が現在のユーザに対して有効かどうかを示します。

署名

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

使用方法

現在のユーザに TOTP コードがない場合、または現在のユーザの検証試行回数が許容回数を超えた場合、このメソッドは例外を発生させます。

verifyDeviceFlow(userCode, startUrl)

デバイス認証フロー中に入力されたユーザコードを検証し、ユーザを OAuth 承認ページにリダイレクトします。ユーザがログインしていない場合はログインする必要があります。ログインに成功したら、ユーザはデバイスから Salesforce データへのアクセスを許可するように求められます。

署名

public static System.PageReference verifyDeviceFlow(String userCode, String startUrl)

パラメータ

userCode
型: String

Salesforce がユーザに提供する人間が判読可能なユーザコード。デバイスの Salesforce データへのアクセスを承認するには、ユーザがこのコードを検証 URL に入力する必要があります。

startURL
型: String

ログインが成功し、デバイスの Salesforce データへのアクセスを承認した後にユーザがリダイレクトされるページの URL。開始 URL を指定しない場合、ユーザはホームページにリダイレクトされます。

戻り値

型: System.PageReference

使用方法

OAuth 2.0 デバイス認証フローのカスタム Visualforce ユーザコード検証ページを作成するときは、このメソッドを Apex コントローラに含めます。このメソッドは、ユーザコードを検証した後、ユーザに対して、必要に応じてログインするように要求し、デバイスの Salesforce データへのアクセスを許可するように要求します。検証および認証が成功すると、ユーザは、開始 URL で定義されたページにリダイレクトされます。