有人可以指导我或让我走上正确的方向吗?我是微服务和 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();
但是没有得到预期的结果。
使用 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 才能使一切正常工作:
希望这有帮助!!