アクセストークンとは何ですか?
アクセストークン (
access_token とも呼ばれます) は、アプリケーションに発行された認可を表す不透明な文字列です。これは、認可情報を取得するための識別子を示す場合もあれば、認可情報 (たとえば、ユーザーのアイデンティティや権限など) そのものを検証可能な形で含む場合もあります。アクセストークンが 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 スコープが含まれている必要があります。スコープの詳細については、スコープ を参照してください。OAuth の役割
OAuth 2.0 のフローには、次の役割があります。
- リソースオーナー: 保護されたリソースへのアクセスを許可できる主体です。通常はエンドユーザーです。
- リソースサーバー: 保護されたリソースをホストするサーバーです。つまり、アクセス先の API です。
- クライアント: リソースオーナーに代わって、保護されたリソースへのアクセスを要求するアプリケーションです。
- 認可サーバー: リソースオーナーを認証し、適切な認可を得た後にアクセストークンを発行するサーバーです。この場合は Auth0 の Authentication API です。
Implicit Grant
authorization_code を必要とせず、アクセストークンを直接受け取る点です。これは、通常はブラウザー内で実行される JavaScript アプリであるこのアプリケーションが、サーバー上で実行される Web アプリよりも信頼性が低く、client_secret (Authorization Code Grant で必要) を安全に扱えるとは見なされないためです。
ユーザーが認証されると、アプリケーションは URI のハッシュフラグメントで とアクセストークンを受け取ります。アプリケーションは、IDトークンを使用してユーザーに関する情報を取得し、アクセストークンを使用してユーザーに代わって API を呼び出せるようになります。
- アプリはフローを開始し、ユーザーが認証できるように、ブラウザーを Auth0 (具体的には 認可エンドポイント
/authorize) にリダイレクトします。 - Auth0 がユーザーを認証します。ユーザーが初めてこのフローを実行し、かつアプリケーションがサードパーティアプリケーションである場合は、クライアントに付与される権限 (たとえば、メッセージの投稿、連絡先の一覧表示など) を示す同意ページが表示されます。
- Auth0 は、URI のハッシュフラグメントにアクセストークン (必要に応じて IDトークンも) を付加して、ユーザーをアプリにリダイレクトします。これでアプリは、ハッシュフラグメントからトークンを取り出せます。
- アプリは、アクセストークンを使用して、ユーザーに代わって API を呼び出せます。
- Permissions は、ユーザーが実行できる操作です。ExampleCo の業務要件では、4 つの Permissions (read、create、delete、approve timesheets) を設定します。
- Roles は Permissions の集合です。ExampleCo の timesheets アプリは 2 種類のユーザー (employees と managers) が使用し、それぞれに異なる権限が必要なため、2 つの Roles (employee と manager) を設定します。