この文章は 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 で定義されたページにリダイレクトされます。