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

Posted

技术标签:

【中文标题】Blazor WebAssembly - 用户帐户和身份服务器的最佳实践【英文标题】:Blazor WebAssembly - Best practices for User Accounts and Identity Server 【发布时间】:2021-06-26 14:26:05 【问题描述】:

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

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

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

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

【问题讨论】:

您可能希望一次只关注一个问题。 【参考方案1】:

    身份验证和授权应始终由 后端,因为前端总是可以被操纵或模拟。 如果您遵循这些说明,授权将完全 由服务器端处理。登录和注销功能将 将您重定向到服务器上运行的剃须刀页面。当用户在 经过身份验证后,将创建一个 JWT 并将其发送到您的 Blazor 应用程序。 然后可以使用此令牌发送身份验证信息 与后续的 HTTP 请求。得到这个有点棘手 接近并运行,但效果很好。

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

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

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

    无论如何,我个人会坚持微软的建议并使用 JWT。

【讨论】:

以上是关于Blazor WebAssembly - 用户帐户和身份服务器的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 核心 blazor webassembly 为 Identity Server 4 Postman 测试获取令牌

Blazor WebAssembly 与身份服务器通过表单传递用户名

钉钉PC端使用 Blazor WebAssembly 读取用户信息

在 Blazor WebAssembly 中获取第三方登录的用户数据

重定向到 Blazor WebAssembly 中的 403 禁止组件

当用户在 Blazor Webassembly 身份验证和授权中具有多个角色时出现问题?