認証と承認 - 研究ノート1-OAuth 2.0の

簡単な紹介

クライアントは、トークン(アクセストークン)を取得するには、ユーザー(承認助成金を)許可する必要があります。OAuth 2.0の承認は、4つを定義します。

認証コードパターン(認証コード)
単純化したモデル(暗黙的)
暗号モード(リソース所有者のパスワードの認証情報)
クライアントモード(クライアント資格情報)

認証コードモード

認証コードモード


    +----------+
     | Resource |
     |   Owner  |
     |          |
     +----------+
          ^
          |
         (B)
     +----|-----+          Client Identifier      +---------------+
     |         -+----(A)-- & Redirection URI ---->|               |
     |  User-   |                                 | Authorization |
     |  Agent  -+----(B)-- User authenticates --->|     Server    |
     |          |                                 |               |
     |         -+----(C)-- Authorization Code ---<|               |
     +-|----|---+                                 +---------------+
       |    |                                         ^      v
      (A)  (C)                                        |      |
       |    |                                         |      |
       ^    v                                         |      |
     +---------+                                      |      |
     |         |>---(D)-- Authorization Code ---------'      |
     |  Client |          & Redirection URI                  |
     |         |                                             |
     |         |<---(E)----- Access Token -------------------'
     +---------+       (w/ Optional Refresh Token)

(A)の元の認証サーバを案内するクライアントへのユーザーアクセス。

(B)クライアント認証を許可するかどうかを選択するユーザー。

認証コードを伴うながら(C)、「リダイレクトURI」(リダイレクトURI)ユーザ認証が許可され、ユーザ認証サーバが事前に指定されたクライアントを導くであろうと仮定。

(D)、クライアントは認証コードを受け取るには、認証サーバアプリケーショントークンに、以前の「URIをリダイレクトする」添付します。この手順は、ユーザーには見えないクライアント・サーバのバックグラウンドで行われます。

認証コードをチェックして、URIをリダイレクトする(E)認証サーバ、確認後、アクセストークンは、クライアント(アクセストークン)に送信されたトークン(リフレッシュトークン)を更新しています。

ここで必要な上記のパラメータの手順は次のとおりです。

次のパラメータを含み、A、認証クライアントアプリケーションのURIステップ:

response_type:ライセンスの種類を表し、ここでは必須、固定値が「コード」である
のclient_id:クライアントのID、必要なことを示して
REDIRECT_URI:URI、オプションのリダイレクト
スコープを:アプリケーション、オプションの範囲を表す
状態を:クライアントを表し端末の現在の状態、任意の値を指定することができ、認証サーバは、不変の値を返します。
ここでは一例です。

GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz
        &redirect_uri=https://client.example.com/cb HTTP/1.1
        &redirect_uri=https://client.example.com/cb HTTP/1.1
Host: server.example.com

ステップC、サーバはクライアントURIで応答し、次のパラメータが含まれています。

コード:急行認証コードが必要です。コードの妥当性は、非常に短く、通常は10分間に設定する必要があり、一度だけのコードを使用することができ、クライアントは、それ以外の場合は、認証サーバを拒否されます。IDコードとクライアントのリダイレクトURI、1対1の関係。
状態:要求に対するクライアントの応答は、このパラメータに含まれている場合は、認証サーバは、このパラメータとまったく同じ含まれている必要があります。
ここでは一例です。

HTTP/1.1 302 Found
Location: [https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA]
&state=xyz

ステップDは、サーバー認証トークンHTTPリクエストへのクライアントアプリケーションは、次のパラメータが含まれています。

grant_type:ここでの「authorization_code」は必須、固定値、使用ライセンスモデルを表しています。
コード:認証コード、必要なオプションを取得するステップを表します。
REDIRECT_URI:必須、URIリダイレクトを表し、パラメータ値のステップと一致しなければなりません。
CLIENT_ID:クライアントIDは、必要なことを示しています。
ここでは一例です。

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https://client.example.com/cb

ステップEでは、HTTPサーバは、次のパラメータを備えた認証応答を送信します。

access_tokenは:アクセストークンの表現、必須。
TOKEN_TYPEは:トークンタイプを表し、値は、大文字と小文字を区別しない、必須であるか、またはタイプのMACベアラタイプであってもよいです。
expires_inは:秒で、有効期限を表します。省略した場合、他の手段は、有効期限を設定する必要があります。
refresh_token:更新トークンは次のアクセストークンのオプションを取得するために使用されていることを示しています。
スコープ:急行管轄、クライアントアプリケーションであればスコープと一致し、これを省略することができます。
ここでは一例です。

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
       "access_token":"2YotnFZFEjr1zCsicMWpAA",
       "token_type":"example",
       "expires_in":3600,
       "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
       "example_parameter":"example_value"
     }

参照

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

おすすめ

転載: www.cnblogs.com/victor2302/p/11757028.html