ログインフローによる同時セッション数の制限
ログインフローを使用して、ユーザあたりの同時 Salesforce セッション数を制限できます。
同時セッションパッケージのインストール
同時セッションの未管理パッケージには、ログインフローソリューションの要素および対象オブジェクトが含まれています。このパッケージには、ユーザの同時セッション数を取得するプラグインが含まれています。待機中のログインが同時セッション制限を超えた場合、フローによってブロックされます。
パッケージはカスタマイズできます。たとえば、セッション制限を変更してカスタマイズできます。デフォルトでは、パッケージのセッション制限は 1 です。
- 同時セッションパッケージをインストールするには、https://login.salesforce.com/packaging/installPackage.apexp?p0=04to0000000WR73 に移動します。
- パッケージをインストールしたら、ログインフローをユーザプロファイルに接続できます。同時セッションを制限するプロファイルにフローを割り当てます。
パッケージコンポーネントの作成
同時セッションパッケージのコンポーネントを詳しく見てみましょう。パッケージを見つけられなかった場合は、ここに示す方法でプラグインおよびログインフローを作成できます。
SessionPlugin は、同時セッション数を取得する Apex クラスです。このクラスは AuthSession テーブルを照会し、一時的なセッションを除くセッションの数を合計します。
- [設定] から、[クイック検索] ボックスに「Apex クラス」と入力し、[Apex クラス] を選択します。
- クラスを作成するには、[新規] をクリックします。
- 次のコードをコピーして Apex クラスコンテンツとして貼り付けます。
ログインフローの作成
パッケージのログインフローには次の要素が含まれています。
- SessionPlugin – 同時セッション数を照会する Apex プラグイン。
- 決定 – 同時セッション数が制限を超えているかどうかを確認します。この結果によって、ログインをブロックするか許可するかを決定します。
- ブロック画面 – ログインが制限を超えた場合、フローによってブロック画面要素が表示されます。
- 割り当て – ログインが制限を超えた場合、この要素は LoginFlow_ForceLogout 変数を true に割り当て、ログインできないようにします。
- ダミー画面 – この要素はプレースホルダです。フローには、出力変数に従う UI 要素が必要です。
- [設定] で、[クイック検索] ボックスに「フロー」と入力して、[フロー] を選択し、[新規フロー] をクリックします。
- [画面フロー] を選択して、[作成] をクリックします。
- ツールボックスの [マネージャ] タブで [新規リソース] をクリックします。LoginFlow_ForceLogout 出力 Boolean 変数を作成します。この変数が true に設定されていると、ログイン試行はブロックされます。

- ユーザに許可する同時セッション数を保存する数値変数を作成します。
- ツールボックスから、[要素] タブを開きます。[Apex アクション (従来)] 要素をキャンバスにドラッグし、SessionPlugin 従来の Apex アクションを選択します。アクションの CONCURRENT_NO パラメータを session_no フロー変数に保存します。

- 2 つの結果を持つ決定要素を追加します。ログインが制限を超えた場���、結果はデフォルトである Block になります。それ以外の場合、結果は Allow になります。

- 許可されている同時セッション数を超えていることをユーザに知らせる画面要素を追加します。

-
LoginFlow_ForceLogout 出力変数を true に設定する割り当て要素を追加します。

- コンテンツのない画面を追加します。

- 要素と要素を接続します。決定を最初の画面に追加するときに、Block の結果を選択します。

- フローを保存します。
- フローを有効化します。
- ログインフローをプロファイルに接続します。ベストプラクティスは、テストプロファイルを持つ専用のテストユーザを作成することです。
- ログアウトし、テストユーザとしてログインしてフローをテストします。
プロファイルをユーザに割り当てると、Salesforce はフローによってログイン時にユーザをリダイレクトします。ログイン試行が制限を超えた場合、ユーザにブロック画面が表示され、ログインできなくなります。Lightning Experience のブロック画面の例を次に示します。
