繁体   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