OAuth 2仕様の リソース所有者とパスワード認証情報 フローを実装しようとしています。有効な応答で返されるtoken_type
値の理解に問題があります。仕様では、すべての例に"token_type":"example"
が示されていますが、
token_typeが必要です。 セクション7.1 で説明されているように発行されたトークンのタイプ。値は大文字と小文字を区別しません。
誰かがこれを私に説明してもらえますか?
token_type
は、認可サーバーへのアクセストークン生成呼び出しのパラメーターであり、基本的にリソースアクセス呼び出しに対してaccess_tokenが生成および提示される方法を表します。認可サーバーへのアクセストークン生成呼び出しでtoken_typeを指定します。
Bearer
(ほとんどの実装のデフォルト)を指定すると、access_token
が生成されて返送されます。ベアラーは、単に「このトークンのベアラーへのアクセスを許可する」と理解できます。 1つの有効なトークンと質問なし。一方、 Mac
およびsign_type
(ほとんどの実装ではデフォルトのhmac-sha-1
)を選択すると、アクセストークンが生成され、キーマネージャーで属性としてシークレットとして保持され、暗号化されたシークレットがaccess_token
として返送されます
はい、token_type
の独自の実装を使用できますが、OAuthの標準実装ではなく開発者がプロセスに従う必要があるため、それはあまり意味がないかもしれません。
誰でも "token_type"をOAuth 2.0拡張として定義できますが、現在の「ベアラー」トークンタイプは最も一般的なものです。
https://tools.ietf.org/html/rfc675
基本的にはFacebookが使用しているものです。ただし、その実装は最新の仕様から少し遅れています。
Facebookよりも安全(または「署名」を持つOAuth 1.0と同じくらい安全)にしたい場合は、「mac」トークンタイプを使用できます。
ただし、Macの仕様はまだ急速に変化しているため、難しい方法です。
ベアラートークン
トークンを所持する関係者(「持ち主」)が、トークンを所持する他の関係者が使用できる方法でトークンを使用できるプロパティを持つセキュリティトークン。ベアラトークンを使用する場合、ベアラは暗号化キーマテリアルの所有を証明する必要はありません(所有の証明)。
Bearer TokenまたはRefreshトークンは、認証サーバーによって作成されます。ユーザーがアプリケーション(クライアント)を認証すると、認証サーバーはアクセストークンの取得に使用できるベアラートークン(更新トークン)を生成します。
Bearer Tokenは通常、認証サーバーによって作成される何らかの種類の暗号値であり、ユーザーにアクセス権を与え、アプリケーションにアクセス権を与えているクライアントに基づいてランダムに作成されます。