有没有办法在远程Bff Api端点中获取当前用户的用户名和ID

问题描述 投票:0回答:1

有人可以指导我或让我走上正确的方向吗?我是微服务和 Identityserver 的新手。我用谷歌搜索了它,但它主要是关于在 mvc 应用程序中执行的操作,这不是我的场景。

我的 .sln 文件中有 3 个项目

FrontendHost //Bff 前端 dotnet React 应用程序

IdentityService //Asp.net mvc 应用 Duende IdentityServer 6 用于保护 API。这里添加的声明是 openid、个人资料、电子邮件

BackendApi1 //.net6 Web api,使用远程 Bff Api 端点方法进行保护。

我在 BackendApi1 项目内的模型及其 api 控制器中有一个字符串 Created By 字段,我想为其分配当前登录用户的名称。

我尝试过

var user = User.Identity.GetUserId(); 

但是没有得到预期的结果。

asp.net-web-api microservices .net-6.0 duende-identity-server
1个回答
2
投票

使用 BFF 实现前端可能非常艰巨。掌握这些概念很复杂。这就是为什么我构建了一个简单的开源 BFF 实现,免费供任何人使用。

首先,了解 API 授权的工作原理非常重要。我试图在本文中尽可能地描述它:https://medium.com/web-security/implementing-api-authorization-with-asp-net-core-and-oauth2-39d883895e3a

了解 API 授权的工作原理后,了解 BFF 作为反向代理的工作原理非常重要。它委托“下游”请求,我试图在这里描述反向代理的作用:https://medium.com/web-security/what-is-a-reverse-proxy-a5639e2bfac2

在你的例子中,当你创建一个包含react应用程序的asp.net core项目时,有一个服务器端组件,它既是BFF又是SPA的主机。这可能很令人困惑。这就是为什么我建议创建一个前端项目和一个单独的 BFF。然后您将获得以下基础设施:https://medium.com/web-security/the-back-end-for-front-end-security-pattern-fd8c8d69c3e0

我明白,尽管如此,这仍然需要掌握和应用,这就是我创建三个示例应用程序的原因。 Spa 是用 Angular 构建的,但如果您愿意,您可以将其替换为 React Spa:

在这些示例中,您可以了解必须如何配置 API 才能

context.Identity...
正常工作。

请参阅这些文章,了解如何配置身份提供商和 BFF 才能使一切正常工作:

希望这有帮助!!

© www.soinside.com 2019 - 2024. All rights reserved.