アクセストークン とは何ですか?
アクセストークン (
access_token とも呼ばれます) は、アプリケーションに発行された認可を表す不透明な文字列です。これは、認可情報を取得するために使われる識別子である場合もあれば、認可情報そのもの (たとえば、ユーザーの ID や権限など) を検証可能な形で内包している場合もあります。アクセストークン は、JSON Web Tokens として実装されることがよくあります。Auth0 の アクセストークン の詳細については、アクセストークン を参照してください。scope クレームの一部として含まれます。
その後、クライアントが API へのリクエスト時に アクセストークン を渡すと、API は scope クレームを確認して、その特定の API エンドポイントを呼び出すために必要な権限が付与されていることを検証できます。
スコープとは何ですか?
各 アクセストークン には、クライアントに付与された権限の一覧が含まれる場合があります。クライアントが Auth0 で認証する際には、要求するスコープ (または権限) の一覧を指定します。それらのスコープが認可されると、アクセストークン には認可済みのスコープ一覧が含まれます。たとえば、タイムシート API では、4 つの異なる認可レベルを受け付けることがあります。タイムシートの読み取り (スコープ
read:timesheets) 、タイムシートの作成 (スコープ create:timesheets) 、タイムシートの削除 (スコープ delete:timesheets) 、タイムシートの承認 (スコープ approve:timesheets) です。クライアントが API に新しいタイムシート項目の作成を要求する場合、アクセストークン には create:timesheets スコープが含まれている必要があります。同様に、既存のタイムシートを削除するには、アクセストークン に delete:timesheets スコープが含まれている必要があります。スコープの詳細については、Scopes を参照してください。OAuthの役割
OAuth 2.0 のあらゆるフローには、次の役割があります。
- Resource Owner: 保護されたリソースへのアクセスを許可できる主体です。通常はエンドユーザーがこれに当たります。
- Resource Server: 保護されたリソースをホストするサーバーです。つまり、アクセスしたい API のことです。
- Client: Resource Owner に代わって、保護されたリソースへのアクセスを要求するアプリケーションです。
- Authorization Server: Resource Owner を認証し、適切な認可を得た後にアクセストークンを発行するサーバーです。ここでは Auth0 の Authentication API を指します。
Implicit Grant
authorization_code を必要とせず、アクセストークンを直接受け取る点です。これは、通常ブラウザー内で動作する JavaScript アプリであるこのアプリケーションが、サーバー上で動作するウェブアプリよりも信頼性が低く、client_secret (Authorization Code グラント で必要) を安全に扱えるとは見なされないためです。
ユーザーが認証されると、アプリケーションは URI のハッシュフラグメントで とアクセストークンを受け取ります。これでアプリケーションは、ID Token を使ってユーザー情報を取得し、アクセストークンを使ってユーザーに代わって API を呼び出せるようになります。
- アプリがフローを開始し、ユーザーが認証できるように、ブラウザーを Auth0 (具体的には /\authorize endpoint) にリダイレクトします。
- Auth0 がユーザーを認証します。ユーザーが初めてこのフローを利用し、かつアプリケーションがサードパーティ製アプリケーションである場合は、クライアントに付与される権限 (たとえば、メッセージの投稿や連絡先の一覧表示など) が記載された同意画面が表示されます。
- Auth0 は、URI のハッシュフラグメントにアクセストークン (必要に応じて ID Token も) を付けて、ユーザーをアプリにリダイレクトします。これでアプリは、ハッシュフラグメントからトークンを取り出せます。
- アプリは、アクセストークンを使用してユーザーに代わって API を呼び出せます。
- 権限とは、ユーザーが実行できる操作のことです。ExampleCoの業務要件では、timesheetに対して read、create、delete、approve の4つの権限を設定します。
- ロールとは、複数の権限をまとめたものです。ExampleCoのtimesheetsアプリは、異なる権限を持つ2種類のユーザー (従業員とマネージャー) が利用するため、employee と manager の2つのロールを設定します。