認証の設定
SaaS 利用者テナントの作成
ではまず、サンプルアプリケーション用に、テナントを2つ作成してみましょう。
サイドメニューの「テナント管理」をクリックします。
「テナント作成」ボタンをクリックしてポップアップを表示しま す。
テナント名・代表者ユーザーの追加・代表者メールアドレス・代表者の仮パスワード、その他にGuidesでご紹介しているテナントに追加属性を定義するで追加したテナント属性が表示されます。
1つ目
- 名前:テナントサンプルその1
- メモ:テナント属性で定義した属性情報となり、自由に設定可能となります
- 代表ユーザーの追加:新規でユーザーを作成
- 代表者メールアドレス: saasus-sample-tenant1@example.com
- 代表者のパスワード: G@2qYPQq などパスワード要件を満たすもの
2つ目
- 名前:サンプルアプリテナント2
- メモ:テナント属性で定義した属性情報となり、自由に設定可能となります
- 代表ユーザーの追加:新規でユーザーを作成
- 代表者メールアドレス: saasus-sample-tenant2@example.com
- 代表者のパスワード: irG_l88r などパスワード要件を満たすもの
(特に決まりではないので、他の値を入れていただいても OK です)
これで、テナントの作成と、そのテナントに属する各1名のユーザーが作成されました。
SaaS 利用ユーザーの作成
では、ユーザー一覧を見てみましょう。サイドメニューから「ユーザー管理」をクリックします。
先ほど作成したユーザーが、各テナント、各環境の admin(SaaS 管理者)の役割として登録されています。
SaaSus Platform では、SaaS 利用者のテナントに「環境」という概念が利用できます。
たとえば、Stripe のように API をメインで使う SaaS では、SaaS 利用者は連携のテストや開発時用の環境が必要になります。
これらを行うために 開発環境 という環境を使い、実際の運用では 本番環境 という環境を使うというように SaaS 管理者は複数の環境を定義することができるようになっています。
SaaS によっては、複数環境が不要な場合もありますので、単一環境を使う場合は 本番環境 だけ意識していただければ大丈夫です。
では、各テナントごとに1名づつユーザーを登録してみましょう。
右上の「ユーザ作成」ボタンをクリックし、ポップアップを出します。
メールアドレス・パスワード・テナント、その他にGuidesでご紹介しているユーザに追加属性を定義するで追加したユーザー属性が表示されます。
とりあえず、4 名登録してみましょう。
メールアドレス: user1-1@example.com
パスワード: パスワード要件を満たすもの
テナント: テナントサンプルその1
ユーザ名: ユーザー1-1
メールアドレス: user1-2@example.com
パスワード: パスワード要件を満たすもの
テナント: テナントサンプルその1
ユーザ名: ユーザー1-2
メールアドレス: user2-1@example.com
パスワード: パスワード要件を満たすもの
テナント: サンプルアプリテナント2
ユーザ名: ユーザー2-1
メールアドレス: user2-2@example.com
パスワード: パスワード要件を満たすもの
テナント: サンプルアプリテナ ント2
ユーザ名: ユーザー2-2
4 名追加でユーザ登録できました。
以下の手順で、これらのユーザーに役割を設定してください。
以降の手順ではプログラミングの知識が必要となります。
認証後の遷移先 URL の設定
設定したドメイン名をベースにして、SaaSus Platform はログイン画面を生成します。
ログイン後、SaaS 側に認証情報を引き継ぎます。この引き継ぎ先の SaaS の URL を、Callback URL として登録する必要があります。
サイドメニューから「認証後遷移先」をクリックし、Callback URL 設定画面を表示します。
通常は、提供している SaaS の URL をベースに Callback URL を設定します。
ただし、今回はサンプルアプリケーションをローカルで動かすため、以下のように設定します。
- Laravel の場合: http://localhost/callback
- Express の場合: http://localhost:3000/callback
認証モジュールの組み込み
次に、 SaaSus Platform の認証モジュールを組み込みます。
今回のアプリケーションでは、すべての URI のルートに認証を必要とします。認証されていない場合には、アプリケーションが利用できない仕様にします。
現状は、
- Laravel の場合は
api/routes/web.php
- Express の場合は
api/app.ts
にて認証機能が利用されているので、SaaSus の認証機能に置き換えます。
- Laravel (PHP)
- Express (TS)
Route::middleware('auth')->group(function () {
Route::get('/', function () {
return view('welcome');
});
Route::get('/dispatch', 'App\Http\Controllers\DispatchController@index')->name('dispatch');
Route::get('/board', 'App\Http\Controllers\MessageController@index')->name('board');
Route::post('/post', 'App\Http\Controllers\MessageController@post')->name('post');
});
require __DIR__ . '/auth.php';
app.use(
session({
secret: "secret",
resave: false,
saveUninitialized: false,
})
);
app.use(passport.initialize());
app.use(passport.session());
を
- Laravel (PHP)
- Express (TS)
// Route::middleware('auth')->group(function () {
// Route::get('/', function () {
// return view('welcome');
// });
// SaaSus SDK標準のAuth Middlewareを利用する
Route::middleware(\AntiPatternInc\Saasus\Laravel\Middleware\Auth::class)->group(function () {
Route::get('/dispatch', 'App\Http\Controllers\DispatchController@index')->name('dispatch');
Route::get('/board', 'App\Http\Controllers\MessageController@index')->name('board');
Route::post('/post', 'App\Http\Controllers\MessageController@post')->name('post');
Route::redirect('/', '/board');
});
// require __DIR__ . '/auth.php';
import { AuthMiddleware } from "saasus-sdk";
...
// app.use(
// session({
// secret: "secret",
// resave: false,
// saveUninitialized: false,
// })
// );
app.use(
["/chat", "/api/board", "/api/post", "/api/plan", "/api/tenant"],
AuthMiddleware
);
// app.use(passport.initialize());
// app.use(passport.session());
個別の認証処理の削除(Express)
Express はルートごとに個別の認証処理があったため、それらを削除します。
- Laravel の場合(変更不要)
- Express の場合は
api/routes/chat.ts
- Express (TS)
router.get(
"/",
(req: Request, res: Response, next: NextFunction) => {
if (req.isAuthenticated()) {
next();
} else {
res.redirect(302, "/login");
}
},
getChats
);
を
- Express (TS)
router.get("/", getChats);