Junx
3 min readJan 1, 2018

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

參考1.2. Protocol Flow重製

Authorization Endpoint

使用到的流程為Client發出Authorization Request請求Resource Owner授權Authorization Grant 給Client,這中間的Authorization Request就是由Authorization Endpoint去定義請求的url格式,必要為GET方式,POST為可選

請求參數:

參考Spec 3.1. Authorization Endpoint

response_type格式:

參考 Spec 3.1.1. 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)

下一篇OAuth原理與Laravel Passport實作(5)