アクセストークンとは何ですか?
アクセストークン (
access_token とも呼ばれます) は、アプリケーションに発行された認可を表す不透明な文字列です。これは、認可情報を取得するために使われる識別子である場合もあれば、認可情報そのもの (たとえば、ユーザーの ID や権限など) を検証可能な形で内包している場合もあります。アクセストークンは、JSON Web Tokens として実装されることがよくあります。Auth0 の アクセストークン について詳しくは、アクセストークン を参照してください。scope クレームに含まれます。
その後、クライアントが API へのリクエスト時に アクセストークン を渡すと、API は scope クレームを確認し、その特定の API エンドポイントを呼び出すために必要な権限が付与されていることを確かめられます。
スコープ とは何ですか?
各 アクセストークン には、クライアントに付与された権限の一覧を含めることができます。クライアントが Auth0 で認証する際には、要求するスコープ (または権限) の一覧を指定します。それらのスコープが認可されると、アクセストークン には認可されたスコープの一覧が含まれます。たとえば、タイムシート API では 4 つの異なる認可レベルを受け付けることがあります。タイムシートの読み取り (scope
read:timesheets) 、タイムシートの作成 (scope create:timesheets) 、タイムシートの削除 (scope delete:timesheets) 、タイムシートの承認 (scope approve:timesheets) です。クライアントが API に新しいタイムシート項目の作成を要求する場合、アクセストークン には create:timesheets scope が含まれている必要があります。同様に、既存のタイムシートを削除するには、アクセストークン に delete:timesheets scope が含まれている必要があります。スコープについて詳しくは、スコープ を参照してください。OAuthの役割
OAuth 2.0のフローには、次の役割があります。
- Resource Owner: 保護されたリソースへのアクセスを許可できる主体です。通常はエンドユーザーを指します。
- Resource Server: 保護されたリソースをホストするサーバーです。つまり、アクセス先のAPIです。
- Client: Resource Ownerに代わって、保護されたリソースへのアクセスを要求するアプリケーションです。
- Authorization Server: Resource Ownerを認証し、適切な認可を得た後にアクセストークンを発行するサーバーです。この場合は、Auth0のAuthentication APIです。
Proof Key for Code Exchange (PKCE)
authorization_code を傍受し、それを アクセストークン (場合によっては リフレッシュトークン) に交換してしまう可能性があります。
Proof Key for Code Exchange (PKCE) (RFC 7636 で定義) は、この認可コード傍受攻撃を軽減するための技術です。
PKCE では、Application は認可リクエストごとに、code_verifier と呼ばれる暗号学的にランダムな鍵と、その変換値である code_challenge を生成し、authorization_code を取得するために Auth0 に送信します。Application が authorization_code を受け取ると、要求したトークンと交換するため、そのコードと code_verifier を Auth0 の に送信します。

- ネイティブアプリがフローを開始し、ユーザーを Auth0 にリダイレクトします (具体的には /authorize endpoint) 。このとき、
code_challengeとcode_challenge_methodパラメータを送信します。 - Auth0 は、クエリ文字列に
authorization_codeを付与して、ユーザーをネイティブアプリにリダイレクトします。 - ネイティブアプリは、
authorization_codeとcode_verifierを、redirect_uriおよびclient_idとともに Auth0 に送信します。これは /oauth/token endpoint を使用して行われます。 - Auth0 はこの情報を検証し、アクセストークン (必要に応じてリフレッシュトークンも) を返します。
- ネイティブアプリは、アクセストークンを使用して、ユーザーに代わって API を呼び出すことができます。
Refresh Token Rotation が有効になっている場合は、リクエストごとに新しいリフレッシュトークンが生成され、アクセストークンとともに発行されます。リフレッシュトークンが交換されると、以前のリフレッシュトークンは無効になりますが、その関連情報は認可サーバーに保持されます。