Okta

オクタ

はじめに

Auth0では、Actionsという機能を用いることで、認証認可プロセスにおいて、トークンに任意のクレームを追加すること(トークンカスタマイズ)ができます。これにより、リソースサーバ側で必要となる情報を、トークンを介して一度に受け渡すことができます。
例えば、ログインユーザのプロファイル情報をカスタムクレームとしてIDトークンに追加する処理や、ロール情報をカスタムクレームとしてアクセストークンに追加する処理を実現できます。

本ページでは、ログインユーザのプロファイル情報をIDトークンに追加する処理と、ロール情報をアクセストークンに追加する処理を例として、設定と実際の動作をご紹介します。

前提

本ページ記載の機能及び設定に関する内容は、2023年1月現在の情報となります。

設定概要

Actions機能を利用したトークンカスタマイズに必要な設定は、以下となります。

1. Actionを新規作成
  • コード編集(JavaScript記述)によるカスタムロジックの定義
2. 作成したActionをFlowへ組み込む
  • 作成したActionを発動させるトリガを指定
    • トリガは予めAuth0側で定義済のものから選択

ここから、具体的な設定方法と動作例をご紹介します。

設定例A:ユーザプロファイル情報をカスタムクレームとしてIDトークンに追加

0. 事前準備

ユーザの[user_metadata]に任意のプロファイル情報を追加

ユーザの[user_metadata]に任意のプロファイル情報を追加
1. Actionを新規作成
  • Auth0管理画面で、[Actions] > [Flows] > [Login]をクリック
Auth0管理画面で、[Actions] > [Flows] > [Login]をクリック
  • [Build Custom]をクリック
[Build Custom]をクリック
  • 作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック

今回はログインフローにActionを組み込むため、[Trigger]で[Login / Post Login]を選択

作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック
  • コードエディタで、実現するロジックを記載(JavaScript記述)

IDトークンにカスタムクレームをセットするため、Function(関数)として、api.idToken.setCustomClaim()を利用

コードエディタで、実現するロジックを記載(JavaScript記述)
  • [Deploy]をクリック
[Deploy]をクリック
  • 作成したActionが正常にDeployされたことを確認
作成したActionが正常にDeployされたことを確認
2. 作成したActionをFlowへ組み込む
  • Auth0管理画面で、[Actions] > [Flows] > [Login]をクリック
Auth0管理画面で、[Actions] > [Flows] > [Login]をクリック
  • 画面右側の[Custom]タブに表示されるAction一覧から、「1. Actionを新規作成」で作成したActionをドラッグ&ドロップし、画面左側のフロー図に適用
画面右側の[Custom]タブに表示されるAction一覧から、「1. Actionを新規作成」で作成したActionをドラッグ&ドロップし、画面左側のフロー図に適用
  • [Apply]をクリック
[Apply]をクリック
  • 正常に反映されたことを確認
正常に反映されたことを確認

動作例A:ユーザプロファイル情報をカスタムクレームとしてIDトークンに追加

1. Auth0連携済のWebアプリケーション画面においてログイン操作を実施
2. プロファイルページを開き、追加した情報が表示されることを確認
プロファイルページを開き、追加した情報が表示されることを確認

設定例B:ユーザロール情報をカスタムクレームとしてアクセストークンに追加

0. 事前準備

ユーザにロールを割り当て

ユーザにロールを割り当て
1. Actionを新規作成

「設定例A:ユーザプロファイル情報をカスタムクレームとしてIDトークンに追加」と同様に①②を実施

  • 作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック

今回はログインフローにActionを組み込むため、[Trigger]は [Login / Post Login]を選択

作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック
  • コードエディタで、実現するロジックを記載(JavaScript記述)

アクセストークンにカスタムクレームをセットするため、Function(関数)としてapi.accessToken.setCustomClaim()を利用

作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック
2. 作成したActionをFlowへ組み込む

「設定例A:ユーザのプロファイル情報をカスタムクレームとしてIDトークンに追加」と同様に、①②③を実施

作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック

動作例B:ユーザロール情報をカスタムクレームとしてアクセストークンに追加

1. Authorization code flowに基づいてアクセストークンを取得
  • Auth0で提供されるログイン画面にてユーザ認証を実施
  • 発行された認可コードを用いてアクセストークンを取得
2. 取得したアクセストークンの確認
  • アクセストークンをデコード
  • ロール情報が追加されていることを確認
取得したアクセストークンの確認

まとめ

 Auth0のActions機能を利用することで、認証認可プロセスにおいて、トークンへカスタムクレームを追加できます。コーディングする上で必要となるバージョン管理機能やテスト、デバック機能も予め備わっています。無償のAuth0トライアル環境でも、機能をお試しいただけますので、カスタマイズ性の高さをぜひ実感して下さい。

Auth0では、今回ご紹介したカスタムロジックの他にも、Actions機能を利用して様々なカスタムロジックを組み込むことができます。Auth0のActions機能にご興味がございましたら、弊社までお問い合わせください。

参考

お問い合わせ・資料請求

株式会社マクニカ  Okta 担当

月~金 8:45~17:30