メインコンテンツまでスキップ

SaaS利用者(ユーザー)のアカウントについて

SaaSus Platformにおける、SaaS利用者(ユーザー)のアカウントの扱いについて説明します。

1.アカウントの構成要素

アカウントは以下の要素で構成されており、全てを設定することで利用可能になります。

  • SaaSユーザー
    SaaSに対する認証情報(ID、パスワード)を保持
  • テナントユーザー
    SaaSユーザーがどのテナントに所属するかを保持
  • 役割(ロール)
    テナントユーザーがどの権限を持っているかを保持

2.リレーションについて

SaaSユーザーは複数のテナントに所属することが出来ます。
また、テナントの中で複数の役割を持つことが出来ます。

例)
ユーザーAはテナントAに所属しており、管理者の役割を持っている。
ユーザーAはテナントBにも所属しており、管理者と一般ユーザーの役割を持っている。
図で表現すると以下となります。

relation

3.アカウント作成のパターンについて

  • セルフサインアップするケース
    例)
    SaaSを利用したいと思ったユーザーが、セルフサインアップ画面から自分でアカウントを作成する。
    アカウント作成時にテナントを作成し、そのテナントの管理者となる。
  • SaaSにユーザー作成機能が実装されているケース
    例)
    テナントの管理者がユーザー作成機能を利用し、役割【管理者、一般ユーザー】を作成する。
  • SaaS管理コンソールからアカウント作成するケース
    例)
    ユーザーからの申請を受けて、SaaS管理者がSaaS管理コンソールからアカウントを作成。
    メールやEventBridge連携などでログイン情報をユーザーに通知し、ユーザーが利用を開始する。

3.1.セルフサインアップするケースの実装

3.1.1.ユーザーのセルフサインアップを許可します

SaaS 開発コンソール - 認証詳細設定 - 認証設定タブ - セルフサインアップ(ユーザー自身による新規登録)の可否
ユーザーが自分でユーザー登録可能にを有効にします

self-sign-up-setting

セルフサインアップを許可すると、SaaSus Platformが生成するログイン画面に「新規登録はこちら」が表示されます

self-sign-up

このリンクからユーザーがアカウントの作成をすることが出来ます。
ここで作成されるのはアカウントの構成要素における、SaaSユーザーが作成されます。

3.1.2.セルフサインアップ後の処理を実装する

セルフサインアップが完了すると、ユーザーはログイン状態でお客様のSaaSに遷移します。
※遷移先の画面
SaaS 開発コンソール - 認証後遷移先 - Callback URL

セルフサインアップを許可している場合は、Callback URLで以下の判定を実施する必要があります。
この判断には$request->userinfoで取得できる配列にtenants情報が存在するかどうかで確認できます。

        // テナント登録がされていない場合は、セルフサインアップ処理を実施
if (empty($request->userinfo['tenants']))

3.1.3.実装サンプル

テナントの作成を参考に、テナント情報が登録できるよう修正してみましょう。

テナント情報が登録できるようになったら、テナントにユーザーを紐づけロールを設定してみましょう。

テナントの作成とテナントユーザーの作成ができたら、$request->userinfo['tenants']に設定したテナント情報が出力されるか確認してみましょう。

dd($request->userinfo['tenants']);

テナント情報が取得でき、テナントユーザーが作成されていることができたら、通常のログインフローでログインができるか試してみましょう。

3.2.SaaSにユーザー作成機能が実装されているケースの実装

セルフサインアップした管理者がユーザーを作成するケースを実装してみましょう。

まずはSaaSにユーザー登録を行います。

        $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管理コンソールからアカウント作成するケースの実装

準備中