SaaS利用者(ユーザー)のアカウントについて
SaaSus Platformにおける、SaaS利用者(ユーザー)のアカウントの扱いについて説明します。
1.アカウントの構成要素
アカウントは以下の要素で構成されており、全てを設定することで利用可能になります。
- SaaSユーザー
SaaSに対する認証情報(ID、パスワード)を保持 - テナントユーザー
SaaSユーザーがどのテナントに所属するかを保持 - 役割(ロール)
テナントユーザーがどの権限を持っているかを保持
2.リレーションについて
SaaSユーザーは複数のテナントに所属することが出来ます。
また、テナントの中で複数の役割を持つことが出来ます。
例)
ユーザーAはテナントAに所属しており、管理者の役割を持っている。
ユーザーAはテナントBにも所属しており、管理者と一般ユーザーの役割を持っている。
図で表現すると以下となります。
3.アカウント作成のパターンについて
- セルフサインアップするケース
例)
SaaSを利用したいと思ったユーザーが、セルフサインアップ画面から自分でアカウントを作成する。
アカウント作成時にテナントを作成し、そのテナントの管理者となる。 - SaaSにユーザー作成機能が実装されているケース
例)
テナントの管理者がユーザー作成機能を利用し、役割【管理者、一般ユーザー】を作成する。 - SaaS管理コンソールからアカウント作成するケース
例)
ユーザーからの申請を受けて、SaaS管理者がSaaS管理コンソールからアカウントを作成。
メールやEventBridge連携などでログイン情報をユーザーに通知し、ユーザーが利用を開始する。
3.1.セルフサインアップするケースの実装
3.1.1.ユーザーのセルフサインアップを許可します
SaaS 開発コンソール - 認証詳細設定 - 認証設定タブ - セルフサインアップ(ユーザー自身による新規登録)の可否
ユーザーが自分でユーザー登録可能にを有効にします
セルフサインアップを許可すると、SaaSus Platformが生成するログイン画面に「新規登録はこちら」が表示されます
このリンクからユーザーがアカウントの作成をすることが出来ます。
ここで作成されるのはアカウントの構成要素における、SaaSユーザーが作成されます。
3.1.2.セルフサインアップ後の処理を実装する
セル フサインアップが完了すると、ユーザーはログイン状態でお客様のSaaSに遷移します。
※遷移先の画面
SaaS 開発コンソール - 認証後遷移先 - Callback URL
セルフサインアップを許可している場合は、Callback URLで以下の判定を実施する必要があります。
この判断には$request->userinfoで取得できる配列にtenants情報が存在するかどうかで確認できます。
- PHP
// テナント登録がされていない場合は、セルフサインアップ処理を実施
if (empty($request->userinfo['tenants']))
3.1.3.実装サンプル
テナントの作成を参考に、テナント情報が登録できるよう修正してみましょう。
テナント情報が登録できるようになったら、テナントにユーザーを紐づけロールを設定してみましょう。
テナントの作成とテナントユーザーの作成ができたら、$request->userinfo['tenants']に設定したテナント情報が出力されるか確認してみましょう。
- PHP
dd($request->userinfo['tenants']);
テナント情報が取得でき、テナントユーザーが作成されていることができたら、通常のログインフローでログインができるか試してみましょう。
3.2.SaaSにユーザー作成機能が実装されているケースの実装
セルフサインアップした管理者がユーザーを作成するケースを実装してみましょう。
まずはSaaSにユーザー登録を行います。
- PHP
$client = new ApiClient();
$authApiClient = $client->getAuthClient();
$createSaasUserParam = new CreateSaasUserParam();
$createSaasUserParam
->setEmail($inputs['email'])
->setPassword($inputs['password']);
$authApiClient->createSaasUser($createSaasUserParam);
SaaSにユーザー登録ができたら、登録者の$request->userinfo['tenants']からテナント情報を取得し、テナントにユーザーを紐づけロールを設定してみましょう。
3.3.SaaS管理コンソールからアカウント作成するケースの実装
準備中