- Auth0でのAPI認可制御について検証した際の手順をメモしておく。
Auth0各要素の関係性
検証準備
APIを定義する
- ダッシュボード画面 -> Applications -> APIsを選択する。
- 「Create API」を押下する。
- Name、Identifierを入力する。
-
Name
:API名 -
Identifier
:APIエンドポイント- 今回は
http://localhost:3000/users
とする。
- 今回は
-
- Permissionsを選択する。
- API呼び出しに必要なPermission(スコープ)を設定する。
- 今回は
test
とする。
- 今回は
アプリケーション(クライアント)を定義する
- ダッシュボード画面 -> Applications -> Applications を選択する。
- 今回は「Single Page Application」を選択する。※任意
- Settingsの下記項目を設定する。
-
Allowed Callback URLs
:http://localhost:3000
-
Allowed Logout URLs
:http://localhost:3000
-
Allowed Web Origins
:http://localhost:3000
-
動作検証
※認可コードグラントで取得したアクセストークンのペイロードを確認する。
-
認可エンドポイントへアクセスする。
-
https://{tenant_url}/authorize?client_id=....&redirect_uri=http://localhost:3000&scope=read:test&state=....&response_type=code&audience=http://localhost:3000/users
※
audience
にAPI定義のidentifier
を指定し、scope
にAPI定義のPermission
を設定する。
-
-
ログインする。
-
同意画面で同意する。※スコープ
test
が表示される。 -
3後に
http://localhost:3000
へリダイレクトされた際に指定された認可コードを取得する。 -
認可コードを指定してアクセストークンを取得する。
POST /oauth/token HTTP/1.1 Host: {tenant_url} Content-Type: application/x-www-form-urlencoded Content-Length: 256 code=...&redirect_uri=http%3A%2F%2Flocalhost%3A3000&scope=test&client_id=...&client_secret=...&grant_type=authorization_code
-
アクセストークンをデコードする。
※aud
にAPI定義のIdentifier
、scope
にAPI定義のpermission
が設定されていることを確認できる。※認可リクエスト時に指定したもの。
※呼び出されたAPI側はこちらの手順に従って、アクセストークンの検証を行う。