Blazor WebAssembly - 用户帐户和身份服务器的最佳实践

Smi*_*727 5 c# user-management identityserver4 blazor blazor-webassembly

我正在尝试在我的软件中创建一个基本的用户管理模块,并且我已按照本指南创建该模块:

https://learn.microsoft.com/en-us/aspnet/core/blazor/security/web assembly/hosted-with-identity-server?view=aspnetcore-5.0&tabs=visual-studio

我想这是微软推荐的最佳实践。但是,我不明白以下内容:

  1. 授权服务器端的部分内容是否得到处理?我想确保没有任何部分(或最少部分)在服务器端呈现,并且授权应主要在 API 调用中进行,因为我使用的是 Blazor WebAssembly。所以我想知道为什么我们可以指定 .cshtml 文件等,因为我认为这是服务器端渲染的代码。
  2. 在指南中,他们多次引用了 IdentityServer(似乎是第三方软件组件)。我正在构建的应用程序是一个商业应用程序。我有义务购买 IdentityServer 许可证吗?如果是,微软是否有推荐的免费方法来做同样的事情?
  3. IdentityServer和IdentityServer4有什么区别?
  4. 我最终想要做的是一个 Microsoft 最佳实践模块,该模块允许管理员创建和处理具有不同角色并可以访问 Blazor WebAssembly 项目不同部分的用户。也许还有其他直接的方法可以做到这一点?今天的最佳实践是什么?

Tho*_*ösi 2

  1. 身份验证和授权应始终由后端处理,因为前端始终可以被操纵或模拟。如果您遵循这些说明,授权将完全由服务器端处理。登录和注销功能会将您重定向到服务器上运行的 Razor 页面。当用户通过身份验证时,将创建 JWT 并将其发送到您的 Blazor 应用程序。然后,该令牌可用于发送身份验证信息以及后续的 HTTP 请求。启动并运行这种方法有点棘手,但效果很好。

  2. 这些示例中使用的身份服务器是 ASP.NET 的一部分。

  3. IdentityServer 和 IdentityServer4 指的是 ASP.NET 中包含的 IdentityServer。

  4. 您还可以使用基于 Cookie 的身份验证并创建 Web API 来处理登录/注销并提供用户信息。设置和提供 Blazor UI 进行身份验证很容易。使用此方法时请确保具有加密连接,因为您需要通过 HTTP 请求发送登录信息。

    不管怎样,我个人会坚持微软的建议并使用 JWT。