Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

登場人物

項番名称実体例やること
ResourceOwner?ユーザ(人間)ResourceOwnerのCredentialsを入力してリソースにアクセスする。
ClientProgram(Webブラウザ, Webアプリケーション, etc.)1、3、4を繋ぐ忙しいプログラム(だからクレームベース認証は難しい)
AuthorizationServer?認証・認可のサーバー機能認証チケットとAccess Tokenの発行を行うWebアプリケーション。
ResourceServer?リソースアクセスを提供するサーバー機能、 AuthorizationServer?と別でも良いAccess Tokenを受けてリソースアクセスを提供するWebアプリケーション。

プロトコル・フロー

+--------+                               +---------------+
|        |--(A)- Authorization Request ->|   Resource    |
|        |                               |     Owner     |
|        |<-(B)-- Authorization Grant ---|               |
|        |                               +---------------+
|        |
|        |                               +---------------+
|        |--(C)-- Authorization Grant -->| Authorization |
| Client |                               |     Server    |
|        |<-(D)----- Access Token -------|               |
|        |                               +---------------+
|        |
|        |                               +---------------+
|        |--(E)----- Access Token ------>|    Resource   |
|        |                               |     Server    |
|        |<-(F)--- Protected Resource ---|               |
+--------+                               +---------------+

(A) Authorization Request

ResourceOwner?は、Clientを経由して、AuthorizationServer?(の認証画面)で認証する。

(B) Authorization Grant

認証後、Clientは、AuthorizationServer?認可エンドポイントで認可グラントを受け取る。

(C) Authorization Grant

Clientは、AuthorizationServer?Tokenエンドポイントに認可グラントを提示することで、Access Tokenを要求する.

(D) Access Token

AuthorizationServer?は、Clientと 認可グラントが正当であれば、ClientにAccess Tokenを発行する。

(E) Access Token, (F) Protected Resource

Clientは、ResourceServer?Access Tokenを提示してProtected Resourceにアクセスする。

フロー

以下4つのグラント種別に対応するフローがある。

Authorization Codeグラント種別

Implicitグラント種別

Resource Owner Password Credentialsグラント種別

Client Credentialsグラント種別

Clientについて

種類

登録

クライアント識別子を使用して、Clientを登録する。

トークン(認可用のCredentials)

Access Token

RFCを読むと、

Refresh Token

RFCを読むと、

Bearer Token

認証用のCredentials

ResourceOwner?

仕様の外(ユーザID、パスワードなどを使用してResourceOwner?を認証)

Client

エンドポイント

AuthorizationServer?

Client上

変遷

OAuth 1.0

OAuth 2.0

OAuth 1.0とOAuth 2.0の違い

  1. HTTPSを必須にし、署名をなくし、トークン取得も簡略化
  2. Access Tokenのみでリソース取得が可能に
  3. Webアプリも含め、4つのClient Profileを仕様化
    1. Webサーバ(Web Server)
      Webアプリケーション
    2. ユーザーエージェント(User-Agent)
      JavaScript
    3. ネイティブアプリ(Native Application)
      モバイルやデスクトップアプリ(ガイドライン程度しか定義されていない)
    4. 自立クライアント(Autonomous)
      既存の認証フレームワークとSAMLなどのプロトコルを使って連携する場合のフロー。

Bearer Token Usage

セキュリティ

セキュリティに関する考察

Authorization Codeグラント種別

Open Redirector

Covert Redirect

既知の問題点を組み合わせた攻撃手法。

以下の2つが組み合わさって成立する。

state パラメタとは、

ザックリ言って、

と言うモノらしい。

Implicitグラント種別

「OAuth 2.0 の implicit grant flow を認証に使うと、車が通れる程どてかいセキュリティ・ホールが開く。」らしい。

この、セキュリティ・ホールとは、

ザックリ言って、

と言うモノらしい。

この問題に対しては、

以下のように対策できる。

参考

OAuth 2.0 and the Road to Hell

Inspecting access tokens

The OAuth 2.0 Authorization Framework

(RFC 6749) OAuth 2.0のフロー定義

OAuth 2.0仕様には4つのフローが定義されている。
これらのフローのタイプを「グラント種別」と呼ばれる。

以下の様な「グラント種別」がある模様。

Authorization Codeグラント種別

Note: The lines illustrating steps (A), (B), and (C) are broken into two parts as they pass through the user-agent.

Implicitグラント種別

Note: The lines illustrating steps (A) and (B) are broken into two parts as they pass through the user-agent.

Resource Owner Password Credentialsグラント種別

Client Credentialsグラント種別

RFC 6750 - Bearer Token Usage

 +--------+                               +---------------+
 |        |--(A)- Authorization Request ->|   Resource    |
 |        |                               |     Owner     |
 |        |<-(B)-- Authorization Grant ---|               |
 |        |                               +---------------+
 |        |
 |        |                               +---------------+
 |        |--(C)-- Authorization Grant -->| Authorization |
 | Client |                               |     Server    |
 |        |<-(D)----- Access Token -------|               |
 |        |                               +---------------+
 |        |
 |        |                               +---------------+
 |        |--(E)----- Access Token ------>|    Resource   |
 |        |                               |     Server    |
 |        |<-(F)--- Protected Resource ---|               |
 +--------+                               +---------------+

参考

OAuth 1.0

OAuth 2.0


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS