OAuth原理與Laravel Passport實作(4)
OAuth 2.0服務端點(Endpoint)
OAuth 2.0共有三種Endpoint
- Authorization Endpoint作為Authorization Server發行Authorization Grant
- Redirection Endpoint作為Client接收Authorization Grant
- Token Endpoint作為Authorization Server發行Access Token
基本流程是Authorization Endpoint -> Redirection Endpoint ->Token Endpoint
有閱讀過上一章節可以看出該流程並非固定,並非每一個Grant Flows都會使用到上述流程,有些Grant Flows會略過上述某步驟
如下圖示意三個Endpoint
Authorization Endpoint
使用到的流程為Client發出Authorization Request請求Resource Owner授權Authorization Grant 給Client,這中間的Authorization Request就是由Authorization Endpoint去定義請求的url格式,必要為GET方式,POST為可選
請求參數:
response_type格式:
適用Grant Flows:
- Authorization Code Grant
- Implicit Grant
Redirection Endpoint
Resource Owner授權Client完成後要回傳Authorization Grant的網址,就是Redirection Endpoint
Client向Authorization Server註冊時所填寫的Redirection URL需於Redirection Endpoint一致也就是說Authorization Request內的redirect_uri要與Redirection Endpoint一致
適用Grant Flows:
- Authorization Code Grant
- Implicit Grant
更多Spec 參考3.1.2. Redirection Endpoint
Token Endpoint
Client向Authorization Server請求Access Token,這個請求的目的地就是Token Endpoint也就是發行Access Token的窗口
適用Grant Flows:
- Authorization Code Grant
- Resource Owner Password Credentials Grant
- Client Credentials Grant
只有Authorization Code Grant不用,因為Authorization Endpoint就回傳Token Endpoint
Token Endpoint沒定義請求參數,就Laravel實作而言會有以下參數
grant_type參數格式,可參考系列(3)