LoginSignup
2
2

More than 5 years have passed since last update.

フグ本OAuth2について(第五章)

Last updated at Posted at 2015-10-08

5章

クライアントクレデンシャルフロー

クライアント自身がデータを所有していて、リソース所有者からのアクセス譲渡が不要な場合に使われるフロー
このフローはOAuht1.0の2-leggedフローと同じような事例に適合するフロー。

クライアントクレデンシャルフローを使いべきケース

リソース所有者がアプリケーションに対して通常OAuthフロー以外の手段で自分のリソースにアクセス権限を与えている場合。

クライアント認証の方法

「クライアントが認可サーバによって適切に認証できるとこ」「認証クレデンシャルの機密性が守られていること」の2点が重要。クライアントが認証を受けるには、認可サーバにclient_idとclient_secretを送ればいいが、アクセストークン要求時にPOSTパラメータとして送る方法とHTTP Basic認証のAuthenticationヘッダを使って送る方法がある。その他にも 公開鍵/秘密鍵のペアを使う方法やSSL/TLSクライアント認証による方法などもある。

セキュリティ特性

クライアントクレデンシャルフローでは一組のクライアントクレデンシャルで大量のデータにアクセスできる。一組のクライアントクレデンシャルからアクセスできるデータ量が大きくなるほど、漏洩のリスクは高まる。なので、クライアントの認証用のクレデンシャルは漏洩しないように管理することが重要。

認証ステップ

ex.facebookのApp Login機能

ステップ1 アプリケーションのクレデンシャルをアクセストークンへ交換

アプリケーションから認可サーバへアクセストークンリクエストを送る。このリクエストにはクライアントクレデンシャルによる認証が必要。
POSTパラメータに必要なもの

  • grant_type
    client_credentialsを指定

  • client_id
    アプリケーションを登録した時に割り当てたれた値

  • cliet_secret
    アプリケーション登録時に割り当てられた値

クライアントクレデンシャルにおる認証が終わると、クライアントにアクセストークンが返される。Facebookでは、access_tokenがURLエンコードされ、レスポンスボディに含まれた形で返される。

ステップ2 API呼び出し

クライアントクレデンシャルフローで発行されるOAuthアクセストークンは、その他のフローで発行されるものと同じなので、使用方法も同じ。APIのプロバイダのサポート状況にあわせて、HTTP Authoraizationヘッダ、またはクエリパラメータの値としてアクセストークンを渡す。

アクセストークンの有効期限

クライアントクレデンシャルでは、有効期限の長いアクセストークンが発行される。仕様ではリフレッシュトークンの発行はサポートされていないなので、有効期限が切れた場合は新しくアクセストークンを要求し直す。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2