1. 程式人生 > >Oauth2授權模式訪問之授權碼模式(authorization_code)訪問

Oauth2授權模式訪問之授權碼模式(authorization_code)訪問

獲取code

redirect_uri可以隨便寫,在瀏覽器輸入(注意是get請求方式):

http://localhost:8080/oauth/authorize?response_type=code&client_id=pair&redirect_uri=http://baidu.com
  • 1

這裡寫圖片描述
如果沒用登陸,會首先重定向到登陸頁面:

這裡寫圖片描述

授權(authrization)

這個過程需要確保使用者是已經登陸的情況,在瀏覽器中輸入和步驟1一樣的地址(注意是get請求方式):

http://localhost:8080/oauth/authorize?response_type=code&client_id=pair&redirect_uri=http://baidu.com
  • 1

此時會出現讓使用者授權的頁面:

這裡寫圖片描述

如果拒絕,則會重定向到redirect_uri的地址:

這裡寫圖片描述

如果同意授權,跳轉到redirect_uri地址,並且在uri後面追加返回的code,如https://www.baidu.com/?code=o4YrCS:

這裡寫圖片描述

根據code獲取access_token

在上一步中拿到的code,通過POSTMAN傳送post請求,grant_typeauthorization_code,請求地址如下:

http://localhost:8080/oauth/token?
grant_type=authorization_code
&code=o4YrCS&client_id=pair
&client_secret=secret&redirect_uri=http://baidu.com
  • 1
  • 2
  • 3
  • 4

這裡寫圖片描述

返回access_token格式:

{
    "access_token": "a8ae6a78-289d-4594-a421-9b56aa8f7213",
    "token_type": "bearer",
    "expires_in": 1999,
    "scope": "read write trust"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

根據access_token獲取資源

訪問http://localhost:8080/rest/api/ping?access_token=a8ae6a78-289d-4594-a421-9b56aa8f7213

:

這裡寫圖片描述

返回資源結果:

{
    "key": "Hello Oauth2"
}
  • 1
  • 2
  • 3

重新整理token(refresh_token)

http://localhost:8080/oauth/token?
        grant_type=refresh_token
        &refresh_token=ce3dd10e-ec60-4399-9076-ee2140b04a61
        &client_id=pair&client_secret=secret
  • 1
  • 2
  • 3
  • 4

這裡寫圖片描述

返回結果:

{
  "access_token": "436423b4-fc22-4f41-8186-d8706ae9396f",
  "token_type": "bearer",
  "refresh_token": "ce3dd10e-ec60-4399-9076-ee2140b04a61",
  "expires_in": 1999,
  "scope": "read write trust"
}