7. 保護されたリソースへのアクセス (Accessing Protected Resources)
クライアント (Client) は、アクセストークン (Access Token) をリソースサーバー (Resource Server) に提示することで、保護されたリソースにアクセスします。リソースサーバーは、アクセストークンを検証し、期限切れでないこと、そのスコープ (Scope) がリクエストされたリソースをカバーしていることを確認しなければなりません (MUST)。リソースサーバーがアクセストークンを検証するために使用する方法 (およびエラーレスポンス) は、この仕様の範囲外ですが、一般的には、リソースサーバーと認可サーバー (Authorization Server) 間の相互作用または調整を含みます。
クライアントがアクセストークンを利用してリソースサーバーで認証する方法は、認可サーバーによって発行されたアクセストークンのタイプに依存します。通常、これには、[RFC6750] などのアクセストークンタイプの仕様で定義された認証スキームを使用して、HTTP「Authorization」リクエストヘッダーフィールド [RFC2617] を使用することが含まれます。
7.1. アクセストークンタイプ (Access Token Types)
アクセストークンタイプ (Access Token Type) は、保護されたリソースリクエストを行うためにアクセストークンを正常に利用するために必要な情報 (タイプ固有の属性とともに) をクライアントに提供します。クライアントは、トークンタイプを理解していない場合、アクセストークンを使用してはなりません (MUST NOT)。
たとえば、[RFC6750] で定義されている「bearer」トークンタイプは、リクエストにアクセストークン文字列を単純に含めることで利用されます。
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Bearer mF_9.B5f-4.1JqM
一方、[OAuth-HTTP-MAC] で定義されている「mac」トークンタイプは、HTTP リクエストの特定のコンポーネントに署名するために使用されるメッセージ認証コード (Message Authentication Code, MAC) キーをアクセストークンとともに発行することで利用されます。
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: MAC id="h480djs93hd8",
nonce="274312:dj83hs9s",
mac="kDZvddkndxvhGRXZhvuDjEWhGeE="
上記の例は、説明のみを目的として提供されています。開発者は、使用前に [RFC6750] および [OAuth-HTTP-MAC] 仕様を参照することをお勧めします。
各アクセストークンタイプの定義は、「access_token」レスポンスパラメータとともにクライアントに送信される追加の属性 (ある場合) を指定します。また、保護されたリソースリクエストを行う際にアクセストークンを含めるために使用される HTTP 認証方法も定義します。
7.2. エラーレスポンス (Error Response)
リソースアクセスリクエストが失敗した場合、リソースサーバーは、クライアントにエラーを通知すべきです (SHOULD)。このようなエラーレスポンスの詳細は、この仕様の範囲外ですが、このドキュメントは、OAuth トークン認証スキーム間で共有されるエラー値のための共通レジストリをセクション11.4で確立します。
主に OAuth トークン認証用に設計された新しい認証スキームは、クライアントにエラーステータスコードを提供するメカニズムを定義すべきです (SHOULD)。その際、許可されるエラー値は、この仕様によって確立されたエラーレジストリに登録されます。
このようなスキームは、有効なエラーコードのセットを登録された値のサブセットに制限することができます (MAY)。エラーコードが名前付きパラメータを使用して返される場合、パラメータ名は「error」であるべきです (SHOULD)。
OAuth トークン認証に使用できるが、主にその目的のために設計されていない他のスキームは、同じ方法でエラー値をレジストリにバインドすることができます (MAY)。
新しい認証スキームは、この仕様での使用法と並行してエラー情報を返すために、「error_description」および「error_uri」パラメータの使用も指定することを選択できます (MAY)。