首頁 每日程式設計 PHP知識 OAuth2.0協議的介紹以及PHP接入

OAuth2.0協議的介紹以及PHP接入

May 15, 2020 pm 06:05 PM
1

OAuth2.0的簡介

OAuth(Open Authorization,即開放授權)是一個無需告知第三方使用者的帳號以及密碼的情況下,授權使用者資訊給第三方的一個安全,開放的標準協議。更多關於協議的介紹,讀者可以參考RFC 6749 。

下面開始簡單的說明下該協定下最為經典的Authorization Code模式,介紹如下圖:

OAuth2.0協議的介紹以及PHP接入

我們說明下,上方流程中一共有四個角色。

  1. ResourceOwner為資源擁有者,就是我們的使用者自己

  2. User-Agent就是我們存取應用程式的瀏覽器

  3. Client為第三方服務

  4. AuthorizationServer為認證伺服器,可以理解為使用者資源的提供者。

那麼呼叫的流程則是:

  1. 使用者本身透過瀏覽器存取Client第三方的服務,Client透過建構OAuth2連結(參數包括目前第三方服務的身份ID,以及重定向URI),將使用者引導至認證伺服器的授權頁

  2. 此時使用者在瀏覽器上選擇是否同意授權

  3. 若使用者同意授權,則認證伺服器將使用者重定向到第一步指定的重定向URI,同時附上一個授權碼Code

  4. ##第三方服務收到授權碼,帶上授權碼來源的重定向URI,向認證伺服器申請憑證。

  5. 認證伺服器檢查授權碼和重定向URI的有效性,透過後頒發AccessToken(呼叫憑證)

d和e都是在服務端執行的,不需要透過瀏覽器

OAuth2的設計


OAuth2.0協議的介紹以及PHP接入

一、授權登入連結的建構

首先在使用者存取一個應用程式時,前端呼叫服務端的接口,服務端偵測到使用者未登錄,此時建構一個授權連結。

$redirect_uri = 'https://test.xx.ccom/index';
$this->goUrl('https://auth.xx.com/connect/oauth2/authorize?appid=xxx&redirect_uri='.$redirect_uri);
登入後複製

將該連結回傳給前端,前端直接跳到該連結。然後

https://auth.xx.com/connect/oauth2/authorize

對顯示一個是否同意授權的頁面,使用者透過點擊授權,此時認證伺服器將直接重定向到redirect_uri並且攜帶一個Code參數。當服務端再接收到這個code參數時,透過這個參數前往認證伺服器取得access_token。


$code = $_GET['code'];
$res = file_get_contents('.$code );
$access_token = $res['access_token'];
登入後複製

然後服務端再透過這個access_token到認證伺服器換取使用者資訊。

$res = file_get_contents('https://auth.xx.com/user_info?token='.$access_token );
$uid = $res['uid'];
$name = $res['name'];
登入後複製

快取方案建議

透過此協定取得到了使用者可以做一定的緩存,避免認證伺服器壓力過大。


  1. 第三方可以設計一定的cookie原則,用來儲存使用者資訊避免一直要求認證伺服器。

  2. #

以上是OAuth2.0協議的介紹以及PHP接入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)