- OAuth2.0におけるクライアントがアクセス要求する保護リソースを認可サーバーに明示的に通知するための仕様についてメモする。
Resource Parameter
- アクセスを要求するリソースを指定するパラメータ
Authorization Request
-
resource:アクセス対象の保護リソースのID- 省略時:認可サーバーはリソース特定なし、もしくは事前定義されたデフォルトのリソース値を使用してリクエストを処理する。
- 認可サーバーは、クライアントに対してアクセス対象のリソースを指定することを要求し、
invalid_targetエラーでパラメーターを省略したリクエストを失敗させる場合もある。
-
インプリシットフロー認可リクエスト例
- https://api.example.com/app/へアクセスするためのアクセストークンを要求する例
GET /as/authorization.oauth2?response_type=token &client_id=example-client &state=XzZaJlcwYew1u0QBrRv_Gw &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb &resource=https%3A%2F%2Fapi.example.com%2Fapp%2F HTTP/1.1 Host: authorization-server.example.com -
認可コードフロー認可リクエスト例
- リソース所有者のカレンダーと連絡へのアクセスを要求する例
GET /as/authorization.oauth2?response_type=code &client_id=s6BhdRkqt3 &state=tNwzQ87pC6llebpmac_IDeeq-mCR2wLDYljHUZUAWuI &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb &scope=calendar%20contacts &resource=https%3A%2F%2Fcal.example.com%2F &resource=https%3A%2F%2Fcontacts.example.com%2F HTTP/1.1 Host: authorization-server.example.com
Access Token Request
-
クライアントがアクセストークンを使用する予定のターゲットサービスもしくは保護リソースを指定する。
-
リクエスト例
-
https://cal.example.com/へのアクセスにアクセストークンを使用することを示す。
POST /as/token.oauth2 HTTP/1.1 Host: authorization-server.example.com Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ Content-Type: application/x-www-form-urlencoded grant_type=authorization_code &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb &code=10esc29BWC2qZB0acc9v8zAv9ltc2pko105tQauZ &resource=https%3A%2F%2Fcal.example.com%2F-
レスポンス例
{ "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOiJodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWIiOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgwMCwic2NvcGUiOiJjYWxlbmRhciIsImF1ZCI6Imh0dHBzOi8vY2FsLmV4YW1wbGUuY29tLyJ9.nNWJ2dXSxaDRdMUKlzs-cYIj8MDoM6Gy7pf_sKrLGsAFf1C2bDhB60DQfW1DZL5npdko1_Mmk5sUfzkiQNVpYw", "token_type":"Bearer", "expires_in":3600, "refresh_token":"4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2", "scope":"calendar" }
-
セキュリティに関する考慮事項
- 他リソースへの不正アクセス対策
-
resourceパラメーターを指定することで、アクセストークンが使用される保護リソースを提示する。
-
- 別テナントが所有するリソースへの不正アクセス対策
- パスコンポーネントなど、テナントを識別するURI部分を含むリソースURIを使用する。
-
resourceパラメータの単一指定
など