簡體   English   中英

如何在使用JWT的asp.net核心Web應用程序和Web API中使用Google身份驗證

[英]How to use google authencticaion in asp.net core web app and web api that uses JWT

我正在asp.net core 2.2中的Web應用程序上工作。 Web API服務於來自Web應用程序的每個請求。 我在Web API中使用JWT令牌認證。 該令牌出現在來自Web應用程序的每個請求中。

Web APP -----> Web API ---->數據層----> EF核心----> DB

在登錄名中,用戶在Web界面上輸入電子郵件和密碼,然后單擊登錄按鈕。 該請求發送給Web API,而不是發送給所有其他層的DB。 如果用戶有效,則在Web API中會生成一個令牌,並將其傳遞給Web App。 現在,在從Web應用程序到Web API的每個其他請求中,Web-APP都會在標頭中發送此令牌。

現在,我想添加一個外部身份驗證提供程序,例如Google。 問題是我不確定如何處理我的申請流程? 因為Google身份驗證僅用於Web應用程序,並不影響Web API的功能。

有什么建議嗎?

您需要做的是將用戶身份驗證委派給外部身份提供商(IdP)。 通常,在登錄屏幕中,您將允許用戶在使用電子郵件/密碼或外部IDP(例如Google,Facebook等)之間進行選擇。 如果用戶選擇后者,則IdP將執行“身份驗證”步驟,然后HTTP重定向到您(您定義的URL)以及經過數字簽名並包含一些用戶信息(名稱)的ID令牌,電子郵件,...)

在這種情況下,對應用程序流的更改如下:

Web APP -----> Web API ----> Data Layer----> EF Core ---->DB

   | ^
   v |

Identity Provider (e.g. Google)

請注意,與IdP之間的重定向通常基於HTTP重定向。 在簡單的名義情況下,盡管必須將每個受支持的對象定義為ID令牌的受信任發行者(用於簽名驗證),但無需從Web API層調用IdP。

IdP,RF Google登錄Facebook登錄通常會提供分步說明

我建議您使用身份服務器4作為身份提供者。

您的Web api將是受身份服務器保護的資源。 在您的客戶端應用中,啟動身份驗證過程時,根據身份驗證流程,用戶將被重定向到身份服務器以進行身份​​驗證,用戶可以選擇本地db用戶登錄名或通過Google身份驗證進行外部登錄。 如果用戶選擇local db,則用戶將在身份服務器的登錄頁面上輸入其憑據,並在本地db中驗證該憑據。 如果憑據正確,則身份服務器將發出令牌,並將帶有令牌的重定向重定向回客戶端應用程序。 如果用戶選擇外部登錄,則用戶將被重定向到Google的登錄頁面以進行登錄,身份服務器將從Google重定向后發布令牌(從Google頒發的令牌中獲取聲明),並通過令牌重定向回到客戶端應用。

在身份驗證流程中,客戶端可以設置他要訪問的api資源,在用戶同意訪問api資源(您的網絡api)的權限后,發出的訪問令牌可以用於訪問您的網絡api。

Identity Server文檔: http : //docs.identityserver.io/en/latest&Code 示例

暫無
暫無

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

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