SessionPermSetActivation

SessionPermSetActivation オブジェクトは、個々のユーザーセッション中に有効化された権限セット割り当てを表します。SessionPermSetActivation オブジェクトが権限セットに挿入されると、有効化イベントが起動され、権限設定をユーザー固有のセッションに適用できるようになります。このオブジェクトは、API バージョン 37.0 以降で使用できます。

サポートされているコール

describeLayout()describeSObjects()query()retrieve()

セッションベースの権限セットを権限セットグループに含めても、グループに割り当てられたユーザーのセッションベースの有効化を行う必要はありません。

メモ

特別なアクセスルール

Summer '20 以降、このオブジェクトにアクセスできるのは、次のいずれかの権限を持つユーザーのみとなります。
  • 「設定・定義の参照」
  • 「セッション権限セットの有効化の管理」

項目

項目名 詳細
AuthSessionId
reference
プロパティ
Filter、Group、Sort
説明
セッションの時間内にこの権限セットの割り当てに関連付けられたセッション ID。
これはリレーション項目です。
リレーション名
AuthSession
リレーション種別
Lookup
参照先
AuthSession
Description
string
プロパティ
Filter、Group、Nillable、Sort
説明
使用デバイスやブラウザーなどのセッションの詳細。
PermissionSetGroupId
reference
プロパティ
Filter、Group、Nillable、Sort
説明
セッションの時間内にこの権限セットグループの割り当てとユーザーに関連付けられた権限セットグループ ID。この項目は、API バージョン 53.0 以降で使用できます。
これはリレーション項目です。
リレーション名
PermissionSetGroup
リレーション種別
Lookup
参照先
PermissionSetGroup
PermissionSetId
reference
プロパティ
Filter、Group、Sort
説明
セッションの時間内にこの権限セットの割り当てとユーザーに関連付けられた権限セット ID。
これはリレーション項目です。
リレーション名
PermissionSet
リレーション種別
Lookup
参照先
PermissionSet
UserId
reference
プロパティ
Filter、Group、Sort
説明
セッションの時間内にこの権限セットの割り当てが適用されるユーザーのユーザー ID。
これはリレーション項目です。
リレーション名
User
リレーション種別
Lookup
参照先
User

使用方法

SessionPermSetActivation を使用して、指定されたセッションの時間内にのみ使用できる権限セットを作成します。たとえば、認証されたセッションの間のみ特定のアプリケーションにアクセスできる権限セットを作成します。

次の Apex の例では、ボタンを使用してセッション情報が送信された後に特定されたセッションが有効化されます。有効化に成功すると、ユーザーに確認メッセージが表示されます。

public class SessionPermSetActivationController {
    // id of the session permission set to be activated
    private final String sessionPermSetId = '0PSxx00000004rJ';
    private final String sessionId; 
    
    public SessionPermSetActivationController() {
        Map<String, String> sessionManagement = Auth.SessionManagement.getCurrentSession();
        sessionId = sessionManagement.get('SessionId');
    }
    
    public PageReference activate() {
        // activate the permission set
        SessionPermSetActivation activation = new SessionPermSetActivation();
        activation.AuthSessionId = sessionId;
        activation.PermissionSetId = sessionPermSetId;
        activation.Description = 'created by SessionPermSetActivationController';
    
        insert activation;
        return null;
    }
    
    public boolean getActivated() {
        Integer alreadyActivated =  [SELECT count()  
                                            FROM SessionPermSetActivation  
                                            WHERE AuthSessionId = :sessionId
                                            And PermissionSetId = :sessionPermSetId  LIMIT 1];
        return alreadyActivated > 0;
    }
}


<apex:page controller="SessionPermSetActivationController">
      <apex:outputPanel rendered="{!!Activated}">
          <h3>Activate Session Permission Set</h3>
          <br />
          <apex:form >
                <apex:commandButton action="{!activate}" value="Activate" id="activateButton"/>
          </apex:form>
      </apex:outputPanel>
      <apex:outputPanel rendered="{!Activated}">
          <h3>Session Permission Set is already active.</h3>
      </apex:outputPanel>
</apex:page>