Hero Image
[授權] OAuth 2.0 Authorization Framework 授權許可

授權許可 (Authorization Grant) 理解授權許可前需要先瞭解解幾個名詞: 授權碼 (Authorization Code):由授權伺服器產生,用於授權第三方應用程式存取資源的授權憑證。 存取權杖 (Access Token):由授權伺服器產生,用於允許第三方應用程式存取資源的授權憑證,時效通常較短。 刷新令牌 (Refresh Token):由授權伺服器產生,用於重新產生存取權杖的授權憑證,時效通常較長。 客戶端憑證:第三方應用程式本身用於 Basic Access Authentication 的驗證資訊,具體來說是 client_id、client_secret。 OAth 2.0 根據授權許可的方式分為四種: 授權碼許可(Authorization Code Grant) 隱含許可(Implicit Grant) 資源擁有者密碼憑證許可(Resource Owner Password Credentials Grant) 客戶端憑證許可(Client Credentials Grant) 授權碼許可(Authorization Code Grant) 第三方應用程式向授權伺服器請求授權碼,並將授權碼傳遞給資源伺服器以存取資源的授權流程,這是最常用的模式。 網站使用者在授權伺服器的登入站點申請授權碼。 授權伺服器將授權碼告知第三方應用程式 第三方應用程式使用客戶端憑證和收到的授權碼 向 授權伺服器 發起請求獲得 token。 隱含許可(Implicit Grant) 因省略對第三方應用的授權碼直接以前端網址列取得 token ,故稱隱含式許可,但直接以前端網址參數的方式傳送 token 給網站使用者,是非常不安全的作法,一般 token 的有效期間設定為 session 期間有效 (關閉網頁即失效)。 網站使用者從授權伺服器登入。 授權伺服器直接在網址列帶入 access_token 轉跳第三方應用程式。 資源擁有者密碼憑證許可(Resource Owner Password Credentials Grant) 讓第三方應用直接以網站使用者密碼取得 token,必須要是高度信任的第三方應用才能用此方法。 第三方應用程式向使用者請求其帳戶密碼(使用者憑證)。 第三方應用程式以使用者帳戶密碼向授權伺服器請求 token。 客戶端憑證許可(Client Credentials Grant) 此種 token 針發放對象為第三方應用而非用戶,與用戶認証無關,由第三方應用傳送其自己的 user credentials 獲得 token。