簡體   English   中英

使用 Openiddict Core 查找具有不記名令牌的用戶

[英]Look up the user with bearer token with Openiddict Core

我目前正在使用 Openiddict、身份和實體框架來管理我的用戶並向用戶分配不Bearer令牌以保護我的 API。

我的基礎架構目前在后端使用 ASP.NET Core Web API,在前端使用單獨的 React 應用程序。 React 應用程序對我的 API 進行 HTTP 調用以檢索它的數據。 后端根本沒有服務器端 HTML 渲染。

在大多數情況下,一切都按我的需要工作。 我可以注冊用戶並從 API 中檢索令牌。 這些令牌包含在我的 HTTP 調用中的Authorization標頭中。 我的AuthorizationController使用這個: https : //github.com/openiddict/openiddict-samples/blob/dev/samples/PasswordFlow/AuthorizationServer/Controllers/AuthorizationController.cs有一些小的調整。 我的Startup.cs也幾乎完全使用這個https://github.com/openiddict/openiddict-samples/blob/dev/samples/PasswordFlow/AuthorizationServer/Startup.cs

在某些情況下,我需要對特定於用戶的端點進行 API 調用。 例如,如果我需要知道用戶是否對評論進行了投票。 我不想在查詢字符串中傳遞用戶ID來獲取用戶詳細信息,而是想使用我收到的不Bearer令牌,他們用來為該端點進行 API 調用。 我不知道如何做到這一點。

在我所做的一些研究中,看起來有些示例使用 ASP.NET Core MVC 而不是 API 來檢索用戶與User變量,如下所示https://github.com/openiddict/openiddict-samples/blob/dev /samples/PasswordFlow/AuthorizationServer/Controllers/ResourceController.cs#L20-L31但這似乎不適用於我的基礎設施。

我的問題是如何根據傳遞給 API 的Bearer令牌查找用戶以從我的數據庫中查找用戶詳細信息? 我假設 API 傳遞的所有令牌都分配給了該特定用戶,對嗎? 如果是這種情況,應該很容易根據Bearer令牌查找它們。

問題是:如何使用 Openiddict 根據分配給用戶的 API 調用令牌來查找用戶? 我需要先獲取用戶詳細信息,然后才能對應用程序執行任何其他操作。 是否有內部烘焙的東西,還是我必須為此編寫自己的支持?

當您在授權控制器中創建AuthenticationTicket時(OpenIddict 稍后使用它來生成訪問令牌),您必須添加與訪問令牌表示的主題/實體相對應的sub聲明。

假設您使用用戶標識符作為sub聲明,您可以使用User.FindFirst(OpenIdConnectConstants.Claims.Subject)?.Value從您的 API 端點輕松提取它並使用它來進行數據庫查找。

暫無
暫無

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

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