OAuth2.0†
OAuth2.0 とは†
- IETF OAuth WG
- RFC6749
- RFC6750
OAuth2.0 の仕様†
ロール†
- クライアント
- リソースサーバを利用するアプリケーション。
- 事前に認可サーバに登録する必要がある。
クライアントタイプ†
- コンフィデンシャルクライアント
- クライアントID・クライアントシークレットを安全に扱うことができるクライアント
- サーバサイドのWebアプリ
- パブリッククライアント
- クライアントID・クライアントシークレットを安全に扱うことができないクライアント
- ブラウザ向けのWebアプリ(JavaScript)、ネイティブアプリ
スコープ†
- リソースサーバ上のリソースに対するアクセス権を制御する仕組み。
- スコープはアクセストークンに紐付ける。
トークン†
- アクセストークン
- 認可サーバがクライアントに対して発行する
- スコープ
- 有効期限(expires_in)
- 攻撃者に盗まれても短時間で接続できなくなるように、有効期限は短く設定される。
- 以下の2種類のトークンのどちらかを選択できる。
- ベアラートークン
- 利用者制限トークン(Sender Constrained Token)
- トークンと利用者が結びついている必要がある
- HoK(Holder of Key) Token
エンドポイント†
- 認可エンドポイント
- 認可サーバが提供するURI
- クライアントに認可コードを発行する
- トークンエンドポイント
- 認可サーバが提供するURI
- クライアントから認可コードを受けてアクセストークンを発行する
- リダイレクトエンドポイント
- リダイレクトURI
- クライアントが提供するURI
- 認可サーバが発行する認可コードやアクセストークンの受け渡し先
- 事前に認可サーバに登録する必要がある
- リダイレクト(ステータスコード302)を使って認可サーバからWebブラウザ経由でクライアントにアクセスする(LocationヘッダにリダイレクトエンドポイントのURIとパラメータを指定する)
グラントタイプ†
- 認可コードグラント (Authorization Code Grant)
- コンフィデンシャルクライアント向け
- PKCEを使うことでパブリッククライアント向けの利用も可能
- インプリシットグラント (Implicit Grant)
- パブリッククライアント向け
- リフレッシュトークンの発行が禁止されている
- 非推奨 ※アクセストークン漏洩のリスクがある
- クライアントクレデンシャルグラント (Client Credentials Grant)
- リソースオーナーパスワードクレデンシャルグラント (Resource Owner Password Credentials Grant)
OAuth Dance†
OAuth2.0を実装しているWebサービス†
- Facebook
- Google Apps
- Windows Live
関連サイト†
ドキュメント†
関連用語†