
Okta
オクタ
はじめに
Auth0では、Actionsという機能を用いることで、認証認可プロセスにおいて、トークンに任意のクレームを追加すること(トークンカスタマイズ)ができます。これにより、リソースサーバ側で必要となる情報を、トークンを介して一度に受け渡すことができます。
例えば、ログインユーザのプロファイル情報をカスタムクレームとしてIDトークンに追加する処理や、ロール情報をカスタムクレームとしてアクセストークンに追加する処理を実現できます。
本ページでは、ログインユーザのプロファイル情報をIDトークンに追加する処理と、ロール情報をアクセストークンに追加する処理を例として、設定と実際の動作をご紹介します。
前提
本ページ記載の機能及び設定に関する内容は、2023年1月現在の情報となります。
設定概要
Actions機能を利用したトークンカスタマイズに必要な設定は、以下となります。
- コード編集(JavaScript記述)によるカスタムロジックの定義
- 作成したActionを発動させるトリガを指定
- トリガは予めAuth0側で定義済のものから選択
ここから、具体的な設定方法と動作例をご紹介します。
設定例A:ユーザプロファイル情報をカスタムクレームとしてIDトークンに追加
ユーザの[user_metadata]に任意のプロファイル情報を追加
![ユーザの[user_metadata]に任意のプロファイル情報を追加](/business/security/okta/image/okta_auth0_actions_dr01.png)
- Auth0管理画面において、[Actions] > [Library]をクリック
![Auth0管理画面で、[Actions] > [Triggers] > [Login]をクリック](/business/security/okta/image/okta_auth0_actions_dr02_1.png)
- [Create Action] > [Build from scratch]をクリック
![[Build Custom]をクリック](/business/security/okta/image/okta_auth0_actions_dr03_1.png)
- 作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック
今回はログインフローにActionを組み込むため、[Trigger]で[Login / Post Login]を選択
![作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック](/business/security/okta/image/okta_auth0_actions_dr04_1.png)
- コードエディタで、実現するロジックを記載(JavaScript記述)
IDトークンにカスタムクレームをセットするため、Function(関数)として、api.idToken.setCustomClaim()を利用
exports.onExecutePostLogin = async (event, api) => { const { favorite_color, preferred_contact } = event.user.user_metadata; if (event.authorization) { //Set claims api.idToken.setCustomClaim(`https://myapp.example.com/favorite_color`, favorite_color); api.idToken.setCustomClaim(`https://myapp.example.com/preferred_contact`, preferred_contact); } };

- [Deploy]をクリック
![[Deploy]をクリック](/business/security/okta/image/okta_auth0_actions_dr06_1.png)
- 作成したActionが正常にDeployされたことを確認

- ① Auth0管理画面で、[Actions] > [Triggers] > [post-login]をクリック
![Auth0管理画面で、[Actions] > [Triggers] > [Login]をクリック](/business/security/okta/image/okta_auth0_actions_dr08_1.png)
- 画面右側の[Custom]タブに表示されるAction一覧から、「1. Actionを新規作成」で作成したActionをドラッグ&ドロップし、画面左側のフロー図に適用
![画面右側の[Custom]タブに表示されるAction一覧から、「1. Actionを新規作成」で作成したActionをドラッグ&ドロップし、画面左側のフロー図に適用](/business/security/okta/image/okta_auth0_actions_dr09_1.png)
- [Apply]をクリック
![[Apply]をクリック](/business/security/okta/image/okta_auth0_actions_dr10_1.png)
- 正常に反映されたことを確認

動作例A:ユーザプロファイル情報をカスタムクレームとしてIDトークンに追加
今回はOkta社提供サンプルアプリケーション(SPA/JavaScript)を利用

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

「設定例A:ユーザプロファイル情報をカスタムクレームとしてIDトークンに追加」と同様に①②を実施
- 作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック
今回はログインフローにActionを組み込むため、[Trigger]は [Login / Post Login]を選択
![作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック](/business/security/okta/image/okta_auth0_actions_dr14_1.png)
- コードエディタで、実現するロジックを記載(JavaScript記述)
アクセストークンにカスタムクレームをセットするため、Function(関数)としてapi.accessToken.setCustomClaim()を利用
exports.onExecutePostLogin = async (event, api) => { if (event.authorization) { api.accessToken.setCustomClaim(`https://my-app.example.com/roles`, event.authorization.roles); } };
![作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック](/business/security/okta/image/okta_auth0_actions_dr15_1.png)
「設定例A:ユーザのプロファイル情報をカスタムクレームとしてIDトークンに追加」と同様に、①②③を実施
![作成するAction名、Actionのトリガ、実行環境を選択し、[Create]をクリック](/business/security/okta/image/okta_auth0_actions_dr16_1.png)
動作例B:ユーザロール情報をカスタムクレームとしてアクセストークンに追加
- Auth0で提供されるログイン画面にてユーザ認証を実施
- 発行された認可コードを用いてアクセストークンを取得
- アクセストークンをデコード
- ロール情報が追加されていることを確認

まとめ
Auth0のActions機能を利用することで、認証認可プロセスにおいて、トークンへカスタムクレームを追加できます。コーディングする上で必要となるバージョン管理機能やテスト、デバック機能も予め備わっています。無償のAuth0トライアル環境でも、機能をお試しいただけますので、カスタマイズ性の高さをぜひ実感して下さい。
Auth0では、今回ご紹介したカスタムロジックの他にも、Actions機能を利用して様々なカスタムロジックを組み込むことができます。Auth0のActions機能にご興味がございましたら、弊社までお問い合わせください。
参考
お問い合わせ・資料請求
株式会社マクニカ Okta 担当
- TEL:045-476-2010
- E-mail:okta@macnica.co.jp
平日 9:00~17:00