OAuth 2.0 ベアラートークンとは正確には何ですか? 質問する

OAuth 2.0 ベアラートークンとは正確には何ですか? 質問する

RFC6750 -OAuth 2.0 認可フレームワーク: ベアラー トークンの使用法によると、ベアラー トークンは次のとおりです。

トークンを所有する当事者 (「所有者」) は、トークンを所有する他の当事者と同じようにトークンを使用できるという特性を持つセキュリティ トークン。

私にとってこの定義は曖昧であり、具体的な内容が見つかりません。

  • 認証プロバイダーを実装していると仮定すると、ベアラー トークンに任意の種類の文字列を指定できますか?
  • ランダムな文字列にできますか?
  • 一部の属性は base64 でエンコードする必要がありますか?
    ハッシュ化する必要がありますか?
  • また、このトークンを検証するために、サービス プロバイダーは承認プロバイダーに照会する必要がありますか?

ベストアンサー1

ベアラー トークン
トークンを所有する当事者 (「ベアラー」) は、他の所有者と同じようにトークンを使用できるという特性を持つセキュリティ トークンです。ベアラー トークンを使用する場合、ベアラーは暗号化キー マテリアルの所有を証明する (所有証明) 必要はありません。

ベアラー トークンは、認証サーバーによって作成されます。ユーザーがアプリケーション (クライアント) を認証すると、認証サーバーがトークンを生成します。ベアラー トークンは、OAuth 2.0 で使用されるアクセス トークンの主な種類です。ベアラー トークンは基本的に、「このトークンのベアラーにアクセス権を与える」ことを意味します。

ベアラー トークンは通常、認証サーバーによって作成される不透明な値の一種です。ランダムではなく、アクセスを許可するユーザーと、アプリケーションがアクセスするクライアントに基づいて作成されます。

たとえば、API にアクセスするには、アクセス トークンを使用する必要があります。アクセス トークンの有効期間は短く (約 1 時間)、ベアラー トークンを使用して新しいアクセス トークンを取得します。アクセス トークンを取得するには、このベアラー トークンをクライアント ID とともに認証サーバーに送信します。こうすることで、サーバーは、ベアラー トークンを使用するアプリケーションが、ベアラー トークンが作成されたアプリケーションと同じであることを認識します。例: アプリケーション用に作成されたベアラー トークンを自分のアプリケーションで使用することはできません。自分のために生成されたものではないため、機能しません。

Google リフレッシュ トークンは次のようになります: 1/mZ1edKKACtPAb7zGlwSzvs72PvhAbGmB8K1ZrGxpcNM

コメントからコピー: 提供するベアラー トークンに制限はないと思います。考えられる唯一のことは、複数のベアラー トークンを許可するとよいということです。たとえば、ユーザーはアプリケーションを 30 回まで認証でき、古いベアラー トークンは引き続き機能します。また、たとえば 6 か月間使用されていないベアラー トークンはシステムから削除します。ベアラー トークンを生成して検証するのは認証サーバーであるため、そのフォーマット方法はあなた次第です。

アップデート:

ベアラー トークンは、すべてのインライン アクション HTTP リクエストの Authorization ヘッダーに設定されます。例:

POST /rsvp?eventId=123 HTTP/1.1
Host: events-organizer.com
Authorization: Bearer AbCdEf123456
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)

rsvpStatus=YES

"AbCdEf123456"上記の例の文字列は、ベアラー認証トークンです。これは、認証サーバーによって生成された暗号化トークンです。アクションで送信されるすべてのベアラー トークンには、issue フィールドがあり、audience フィールドには送信者ドメインが https:// 形式の URL として指定されています。たとえば、メールの送信元が[email protected]の場合、audience はhttps://example.comです。

ベアラー トークンを使用する場合は、要求が認証サーバーから送信され、送信元ドメインを対象としていることを確認します。トークンが検証されない場合、サービスは HTTP 応答コード 401 (Unauthorized) で要求に応答する必要があります。

ベアラー トークンは OAuth V2 標準の一部であり、多くの API で広く採用されています。

おすすめ記事