見出し画像

セミナーメモ:認証機能の開発工数削減をデモで体験!次世代認証基盤サービス『Auth0 by Okta』導入実践ウェビナー


下記オンラインセミナーの受講メモ

  • 2024/11/20開催

  • 認証機能の開発工数削減をデモで体験!次世代認証基盤サービス『Auth0 by Okta』導入実践ウェビナー

  • 主催:クラスメソッド, 

Auth0 ?

CICが提供する認証プラットフォーム

  • SSOを実現できる次世代型統合認証基盤

  • 認証基盤の構築ではなくI/F開発

    • 開発が早く手離れも良い

    • 認証機能の開発にかかる工数をゼロにする、という目標を掲げる

認証・認可をサポート

認証機能として、利用者が作り込む必要がある箇所👇️

競合との比較
OktaはBusiness to Employee (社内の従業員認証)であり、Auth0とは守備範囲がやや違う、というスタンス

右側👇️は、認証はするが管理はADなどに委譲

デモ

基本構成

Step1. Create application

Step2. サンプルアプリのDL、起動

初期アプリ(サンプルアプリ)をDLしアプリを起動。
ここではSPAアプリの例。

この段階で localhost:3000 にアクセスしてもエラーが出る。
下記のオレンジは callback であり、この Callback URL を未設定である場合はエラーになる。
(Auth0に、許可アプリケーション(URL)を未設定、という状態)

Callback先の設定

Step3. Universal Login

ログイン機能周りの機能(UI含む)実装はAuth0が提供するものを活用しつつ、必要に応じてカスタマイズ。

管理画面上で言語設定を行うだけで日本語ログイン画面になる。

Step4. Auth0 Lock

自サーバでログイン画面を実装しつつAuth0を使いたい場合はこのライブラリをインポートして、画面実装する。
Auth0 としては非推奨(Universal Loginの利用を推奨)。
理由は、ログイン画面にはセキュリティリスクが埋め込まれやすいから。

Step5. ログイン画面のカスタマイズ

管理画面上でHTML/JSの編集を行う。

Universal Login 画面をベースにしたシンプルなカスタマイズも可能

Step6. MFA有効化

管理画面から適宜選択・設定

Step7. Connection

ログイン方法。どのDBを用いてログインするか。
デフォルトではGoogleログインがOn。

70以上のコネクタあり。
1アプリケーションで複数のコネクタを用いることも可能。

Step8. Actions

MFAの有効化・無効化もActionsで切り替え可能。
(国外からの認証の場合はMFAを必要とする、など)

IP制限の例。Nodeにより実装する。

ログによる確認。

Step9. RBAC

RBAC = Role-Based Access Control

ロールによって権限を制御すること(RBACとか書いてるけど普通のこと)。
これもAuth0による実装が可能。

補足:よくある勘違いの是正

トークンの中にロール情報を同封することが可能。
APIの振る舞い(ロールに基づいて機能を制御)はあくまでアプリの仕事。
Auth0にやるのは、認可であり、情報をアプリにわたすところまで。

APIの作成

設定

パーミッションを設定
 アプリで扱いたい権限の種類を作成

Roleの作成

Roleが所有している権限を設定

トークンに権限が付帯されていることをアプリ側で確認

トークンが console.log で出力された

トークンの内容をデコードしてみると…
Permissions に情報がある。

YAML Import/Export

CI/CD, IaC 機能


Custom Database Connection

レガシー向け機能
Auth0でユーザーストア認証をラップする

遅延マイグレーション
一括移行ではなく、ログインした人から順次、Auth0のDBに移行していく。

Auth0から自社DBを参照させるため、Auth0のIPを取得してインバウンドルールで許可するなど適宜対応する。

スクリプトでDBへ接続する。
コードをゼロから書くのではなく、テンプレートからコードを取得して接続先情報を書き換えるだけでOK。

自前DBをユーザーストアとして指定

これで、Auth0上で管理されていなかったユーザーがログインできるようになる。

遅延マイグレーション

管理画面のユーザーマネジメントを確認
ログイン者のユーザー情報管理が移行されている。


いいなと思ったら応援しよう!