
Okta
オクタ
Auth0 Actions機能を利用したアクセストークンにおけるスコープカスタマイズ実現
はじめに
Auth0では、認証認可におけるカスタムロジックを実現するActions機能が提供されています。2023年8月に、以下3点の機能アップデートが行われました。
- ログインユーザに関するSAML応答カスタマイズ
- アクセストークンにおけるスコープカスタマイズ
- 利用可能なユーザ情報の拡張
本ページでは、アクセストークンにおけるスコープカスタマイズ実現について、具体的な設定例をご紹介します。
ログインユーザに関するSAML応答カスタマイズについては、Auth0 Actions機能を利用したSAML応答カスタマイズ実現をご確認ください。
前提
本ページ記載の機能及び設定に関する内容は、2023年8月現在の情報となります。
Actions機能の概要及び基本的な設定方法は、Auth0 Actions機能を利用したトークンカスタマイズ実現をご確認ください。
機能アップデート概要
今回アップデートされた機能は以下の通りです。
- アクセストークンにおけるスコープカスタマイズ
Login FlowのAPI Objectとして、アクセストークンにおけるスコープ追加及び削除機能が追加されました。リクエスト元情報等に応じて、スコープの追加削除ができます。
追加されたAPI Objectは、api.accessToken.addScope/api.accessToken.removeScopeとなります。詳細は、Actions Triggers: post-login - API Object - Auth0 docsをご確認ください。
設定及び動作例
Action機能を利用したアクセストークンにおけるスコープカスタマイズ実現について、設定及び動作例をご紹介します。
設定例:アクセストークンにおけるスコープカスタマイズ
今回は、アクセス元の国情報と要求先リソースの条件に応じて、アクセストークンのスコープ追加を実現します。
Actionの新規作成及び作成したActionをTriggers: post-loginに組み込みます。
組み込み方法は、Auth0 Actions機能を利用したSAML応答カスタマイズ実現をご確認ください。
- コードエディタにて、実現するロジックを記載(JavaScript記述)
※必要最低限の処理のみ記載
exports.onExecutePostLogin = async (event, api) => { if (event.request.geoip.countryCode === 'JP' && event.request.query.audience === 'https://example.com') { api.accessToken.addScope("read:jp"); } };
動作例:アクセストークンにおけるスコープカスタマイズ
Authorization Code Flowを利用して、作成したActionによるトークンカスタマイズ処理を確認します。必要となる設定は、Auth0におけるAuthorization Code Flow(アクセストークン&IDトークン)をご確認ください。
https://<YOUR_AUTH0_TENANT_NAME>.<REGION_DOMAIN>.auth0.com/authorize?audience=https://example.com&response_type=code&scope=openid profile email&client_id=Bb9P6WoNhg0XIBnpSNLxd284ChfCxUIq&redirect_uri=https://example.com

https://example.com/?code=LfsgBMfG4Gs_TxysEr_6yXREFb2W10a0UrL9VIwEzZpjz
> curl -X POST --url 'https://<YOUR_AUTH0_TENANT_NAME>.<REGION_DOMAIN>.auth0.com/oauth/token' --header 'content-type: application/x-www-form-urlencoded' --data 'grant_type=authorization_code&client_id=Bb9P6WoNhg0XIBnpSNLxd284ChfCxUIq&client_secret=quS8KFlWCT7UUtOdHvzIMKaip72Ut2dy0KgQproakBP9hXh4_yxixB1d5u_L4MKN&code=LfsgBMfG4Gs_TxysEr_6yXREFb2W10a0UrL9VIwEzZpjz&redirect_uri=https://example.com'
取得結果 (スコープ追加を確認)
{
"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6Ikp...(略)...uddoylYsMiU_cxfgUXQ",
"id_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVC...(略)...reTo69XG_wKEv3otwug",
"scope":"openid profile email read:jp",
"expires_in":86400,
"token_type":"Bearer“
}
アクセストークンのデコード結果 (スコープ追加を確認)
{
"iss": "https://<YOUR_AUTH0_TENANT_NAME>.<REGION_DOMAIN>.auth0.com/",
"sub": "auth0|642637dc3d0fd8dd93fedd90",
"aud": [
"https://example.com",
"https://<YOUR_AUTH0_TENANT_NAME>.<REGION_DOMAIN>.auth0.com/userinfo"
],
"iat": 1694236566,
"exp": 1694322966,
"azp": "Bb9P6WoNhg0XIBnpSNLxd284ChfCxUIq",
"scope": "openid profile email read:jp"
}
おわりに
今回は、Actions機能のアップデートにおいて、アクセストークンのスコープカスタマイズ実現方法をご紹介しました。Rules/Hooks機能に関するEOL(End of Life)アナウンスが出ておりますので、Actions機能で実現可能となる処理は、今後も追加されていくと予想されます。
実施されるアップデートに応じて、今後も随時情報更新していきたいと思います。
参考
お問い合わせ・資料請求
株式会社マクニカ Okta 担当
- TEL:045-476-2010
- E-mail:okta@macnica.co.jp
平日 9:00~17:00