マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ここでは、基本的に、OAuth 2.0について言及する。

OAuth 2.0は、認証ではなく認可のためのプロトコル(権限委譲プロトコル)。

変遷

OAuth 1.0

OAuth 2.0

OAuth 1.0とOAuth 2.0の違い

概要

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

参考

OAuth 2.0とOpenID Connectの違い

概要

参考

(OAuth 2.0 の)詳細

登場人物

Resource Owner

Client

Authorization Server

Resource Server

プロトコル・フロー

+--------+                               +---------------+
|        |--(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

Resource Ownerは、Clientを経由して、Authorization Server(の認証画面)で認証する。

(B) Authorization Grant

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

(C) Authorization Grant

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

(D) Access Token

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

(E) Access Token, (F) Protected Resource

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

★ 参考

ココのスライドが参考になる。

グラント種別毎のフロー

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

Authorization Codeグラント種別

Implicitグラント種別

Resource Owner Password Credentialsグラント種別

Client Credentialsグラント種別

Clientについて

種類

事前登録

認可用のCredentials(Token)

Access Token

RFCを読むと、

GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Bearer XXXXXXXXXX

Refresh Token

RFCを読むと、

Accessトークンのタイプ

認証用のCredentials

Resource Owner

Resource Ownerの認証用のCredentialsはOAuth 2.0 仕様の外
(Authorization ServerはユーザID、パスワードなどを使用してResource Ownerを認証)

Client

Clientの認証用のCredentials
(Authorization ServerはこれによりClientを認証)

エンドポイントの種類

URLは仕様で規定されない。

Authorization Server上のエンドポイント

Client上のエンドポイント

Redirectエンドポイント

Requestパラメタ

response_typeパラメタ

認可エンドポイントにGETで送付する。
以下のように、グラント種別毎に、決まったパラメタを指定する必要がある。

項番グラント種別パラメタ値意味
Authorization Codecode仲介コードを要求
ImplicittokenAccess Tokenを要求

client_id, client_secretパラメタ

Clientの識別や認証のために、色々な所で使用されるパラメタ。

redirect_uriパラメタ

client_idに対応するRedirectエンドポイントを指定するために指定するパラメタ。

grant_typeパラメタ

TokenエンドポイントにPOSTを送付するときに指定するパラメタ。
以下のように、グラント種別毎に、決まったパラメタを指定する必要がある。

項番グラント種別パラメタ値
Authorization Codeauthorization_code
Resource Owner Password Credentialspassword
Client Credentialsclient_credentials
上記1、2、3のグラント種別でRefreshトークンを使用する際refresh_token

scopeパラメタ

stateパラメタ

CSRFのセキュリティ対策に使用が推奨されるパラメタ。

Responseパラメタ

code, access_token, refresh_token

認可エンドポイント

項番パラメタ値意味
codeaccess_tokenを取得するためのtokenで、
Authorization Codeグラント種別でのみ使用する。

Tokenエンドポイント

項番パラメタ値意味
access_tokenコチラを参照
refresh_tokenコチラを参照

Request & Responseの例

認可エンドポイント

Tokenエンドポイント

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 2.0 拡張

OAuth 2.0 セキュリティ関連トピック

参考

OAuth 1.0

OAuth 2.0

@IT

Qiita

slideshare

技術文書中での Shall / Should / May

Microsoft Azure Active Directory


Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth


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