Auth0でよく使われるTokenたち
2024.07.07
Tokenは認証と認可はモダンなWebアプリには非常に重要な役割を持っています。
Auth0公式Docでも紹介されてますが、普段開発に経験で、もう少しわかりやすく分類してみると、
Tokenは主に
- ID Token
- Access Token
- Refresh Token
三つがあります。
Tokenとは?
Tokenは、クライアント(人、機械、プログラムなど)の身分を確認し、特定のアクションを実行する権限があるかどうかを判断するのに役立つ認証情報です。
ざっくりしたステップ:
- 何かの認証プロセスで、サーバーがTokenを生成し、クライアントに渡す。
- クライアントがリクエストを送る際に、Tokenを添付する
- サーバー側がリクエストのTokenと内容を確認し、リクエストを処理しています。
ID Token
- ユーザーが認証したと証明するTokenである
- 権限情報が入っていないため、認可に使わない
- 主な情報
-- ドメイン(iss、issuer、発行者)
-- ID
-- 名前
-- Token発行時のタイムスタンプ
-- Token期限のタイムスタンプ
ID Token例:
{
"iss": "http://my-domain.auth0.com",
"sub": "auth0|123456",
"aud": "my_client_id",
"exp": 1311281970,
"iat": 1311280970,
"name": "Jane Doe",
"given_name": "Jane",
"family_name": "Doe",
"gender": "female",
"birthdate": "0000-10-31",
"email": "janedoe@example.com",
"picture": "http://example.com/janedoe/me.jpg"
}
Access Token
- 権限情報が入っている(scope)
- APIをコールする際に添付され、リソースをアクセスする
Access Token例:
{
"iss": "https://my-domain.auth0.com/",
"sub": "auth0|123456",
"aud": [
"https://example.com/health-api",
"https://my-domain.auth0.com/userinfo"
],
"azp": "my_client_id",
"exp": 1311281970,
"iat": 1311280970,
"scope": "openid profile read:patients read:admin"
}
Refresh Token
- ユーザーが再認証せず、新しいAccess Tokenを取得するためのTokenである
Refresh Token例:
{
"access_token": "eyJz93a...k4laUWw",
"refresh_token": "GEbRxBN...edjnXbL",
"token_type": "Bearer"
}
まとめ
これら3つのトークンタイプを理解することは、Auth0をアプリケーションに統合する際に不可欠です。ID Tokenはユーザー情報を提供し、Access TokenはAPIリクエストを認可し、Refresh Tokenはユーザーをログイン状態に保ちます。これらのトークンを適切に実装することで、ユーザーにとって安全でシームレスな認証体験を作成できます。