簡體   English   中英

具有自定義身份驗證的OAuth2提供程序

[英]OAuth2 Provider with custom authentication

我正在嘗試實現OAuth2提供程序,該程序使用自定義登錄名對用戶進行身份驗證。 為了理解,我看了Spring Boot OAuth2教程 我不太了解如何實現自己的身份驗證機制,以與服務器上的OAuth2 SSO一起使用。

我想添加自定義身份驗證機制(例如“用戶必須回答身份驗證問題”或“用戶必須輸入ID並單擊按鈕進行身份驗證”),而不是Facebook和Github示例。

我讀過有關實現自己的AuthenticationProvider的信息,但是我對如何組合所有難題部分一無所知。

讓我們一次走一步。 OAuth只是authz提供程序,因此不談論身份驗證。 現在專門針對您的用例,如果您希望對用戶進行身份驗證,則基於OAuth身份驗證代碼的流程就很有意義(您甚至可以使用隱式流程,請檢查rfc 6749)。 現在,這將如何為您工作。 為了簡單起見,我選擇了隱式流程,Authz流程只是它的擴展,最終客戶端獲得了一個臨時代碼,該代碼稍后與Identity Server交換以獲取訪問令牌。 步驟如下:

  1. 客戶端應用使用rfc 6749的數據訪問/ authorization uri

  2. 驗證提交的數據后,服務器會將用戶轉發到“登錄”頁面(或用於身份驗證的其他頁面)。 認證后,在瀏覽器中設置cookie或將數據存儲在服務器中以將用戶標記為已認證。

  3. 身份驗證服務器將用戶重定向到用戶同意頁面后(根據需要甚至可以根據需要跳過此頁面,但是OAuth 2規范包含此頁面),其中用戶指定允許所有許可(范圍),這里用戶可以允許或拒絕。
  4. 如果用戶允許,則將這些權限提交給服務器,然后服務器存儲數據,並在#客戶碎片化重定向URI(在實際請求期間提交的回調URI)中將用戶重定向到具有訪問令牌的客戶URI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM