iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
自我挑戰組

Identity Management 系列 第 10

10 - OAuth (4) Resource owner password credentials grant

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20220921/20116003vUknCgx5su.png

今天要來介紹 OAuth 第三種授權方式,Resource owner password credentials grant,基本上就是使用者直接將 credentials 交給 Client,之後 Client 就可以用這個 credentials 取得授權。取得授權的過程相對安全,但是將 credentials 交給 Client 經手本身就是最大的風險

Roles

在上面這張示意圖中,有幾個主要的 roles:

  • User - 使用者
  • Browser - 使用者與應用程式的互動介面。這裡遇到的前端介面可以是 server-side 或是 client-side render
  • Client - 使用者正在使用的應用程式,也是想要存取資源、但暫時未獲得授權的應用程式
  • Authorization server - 協助授權的應用程式
  • Resource server - 使用者存放資源的地方

Steps

1

使用者正在使用某應用程式 (Client) ,在某一個時間點,想要讓這個應用程式載入自己存放在另外一個地方 (Resource server) 的資源,譬如照片

於是,使用者點擊了某個按鈕,譬如「連結我的照片」

2

這時候 Client 就會傳送一個表單,讓使用者填入 credentials

3

使用者填完 credentitials 並將資料回送給 Client

4

Client 收到使用者的 credentials 後,便會將資料傳送給 Authorization server 準備取得授權

5

Authorization server 驗證完使用者身份之後,就會將 access token 和 refresh token 回傳給 Client

6

Client 拿到 access token 之後就可以帶著這個 token 向 Resource server 送出資源的請求。而 Resource server 就會根據 access token 當中的權限設定,來決定是否要送出資源給 Client


在這個流程當中,資料的交換都是透過後端來完成,因此不會有資訊暴露在前端的問題。然而如同剛剛提到,這個流程最大的風險就是使用者將 credentials 交給 Client


明天我們將來看最後一種 OAuth 的授權方式!


上一篇
09 - OAuth (3) Implicit grant
下一篇
11 - OAuth (5) Client credentials grant
系列文
Identity Management 31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言