OAuth2.0學習(1-6)受權方式3-密碼模式(Resource Owner Password Credentials Grant)

受權方式3-密碼模式(Resource Owner Password Credentials Grant)json

密碼模式(Resource Owner Password Credentials Grant)中,用戶向客戶端提供本身的用戶名和密碼。客戶端使用這些信息,向"服務商提供商"索要受權。服務器

在這種模式中,用戶必須把本身的密碼給客戶端,可是客戶端不得儲存密碼。這一般用在用戶對客戶端高度信任的狀況下,好比客戶端是操做系統的一部分,或者由一個著名公司出品。而認證服務器只有在其餘受權模式沒法執行的狀況下,才能考慮使用這種模式。app

密碼模式

它的步驟以下:url

(A)用戶向客戶端提供用戶名和密碼。spa

(B)客戶端將用戶名和密碼發給認證服務器,向後者請求令牌。操作系統

(C)認證服務器確認無誤後,向客戶端提供訪問令牌。3d

B步驟中,客戶端發出的HTTP請求,包含如下參數:code

  • grant_type:表示受權類型,此處的值固定爲"password",必選項。
  • username:表示用戶名,必選項。
  • password:表示用戶的密碼,必選項。
  • scope:表示權限範圍,可選項。

下面是一個例子。orm

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

     grant_type=password&username=johndoe&password=A3ddj3w

C步驟中,認證服務器向客戶端發送訪問令牌,下面是一個例子。server

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" } 

整個過程當中,客戶端不得保存用戶的密碼。

相關文章
相關標籤/搜索