Blazor Webassembly 中的身份验证和授权最佳实践

Authentication and Authorisation Best Practice in Blazor Webassembly

我即将开始使用 Blazor Webassembly (net 6.0) 构建一个新的在线系统,这将要求用户先登录才能使用任何功能。

我目前正在尝试确定处理身份验证和授权的最佳方法。以前,在设置新的 Blazor 项目时,我通过选择 'Individual User Accounts' 选项使用了内置身份验证,然后在服务器项目上构建了 razor 页面。我喜欢这个选项,因为它使用 IdentityServer 并且对我来说这是一个更安全的选择,因为我当然不是安全专家。然而,作为这个新系统的一部分,某些用户将需要能够管理他们自己公司内的其他用户,我真的不想将他们发送到 razor 页面来执行此操作,因为我正在使用一个组件库 (Radzen) 在客户端和外观将在客户端和服务器之间不一致。

我从 Chris Sainty 那里找到了一个 great tutorial 可以让我自己设置身份验证和授权,但我怀疑如果我走这条路它是否足够安全。

我想我有的问题可以帮助我做出决定:

  1. 是否可以在 ASP.NET 核心托管项目上使用像 Radzen 这样的 Blazor 组件库?
  2. 如果没有,是否可以使用 Razor 组件在客户端创建用户管理页面,并以某种方式让这些页面与设置的服务器端进行通信?我需要管理员用户才能创建、更新和删除用户。
  3. 最后,如果以上两个选项都不可行,在我自己设置身份验证和授权以确保系统尽可能安全时,有什么特别需要考虑的吗?

谢谢。

Is it possible to use Blazor component libraries like Radzen on the ASP.NET Core hosted project?

是的,您可以在 Razor Pages 页面中嵌入 Razor 组件。

is it possible to create user management pages client

是的,它是......但是你采取的任何安全措施都变得毫无用处。永远不要做这样的事情。相反,在 Asp.Net 核心服务器项目(托管,对吗?)上创建用户管理页面,然后将您的用户从 Blazor 页面导航到这些页面。您可以在这些页面中嵌入 Radzen 组件(Razor 组件)。

Finally if the two options above aren't possible, is there anything in particular that I need to be considering when setting up authentication and authorisation myself to make sure that the system is as secure as possible?

我不建议选择这条路。它很难、危险且无效。使用现有系统。

据我了解,您的问题是 UI 的外观,对吗?在这种情况下,您可以搭建诸如 Login.cshtml 之类的页面,并让它们看起来像一个 Radzen 组件。让用户相信他正在同一个网站中导航并不难。这是我推荐的方式。或者在这些页面中嵌入Radzen组件,让它们相互通信。

简单示例

假设您希望 Login.cshtml 看起来像是一个 Radzen 组件,并且 Radzen 套件包含一个登录组件(我不熟悉那些库)。在这种情况下,您应该首先搭建 Login.cshtml 页面,然后将 Radzen 登录组件嵌入到您刚刚搭建的 Login Razor Pages 页面中,或者,这应该容易得多,只需复制 CSS 在 Radzen 登录组件中使用,并在您的脚手架登录页面中使用它。