首页 > 解决方案 > Blazor 默认角色提供程序

问题描述

我已经在 .NET Core 3.1 中设置了 Blazor 应用程序,并且正在实现身份验证/授权,但很明显,我对默认身份验证的工作原理并没有很好的理解。

我设置了一个“AuthorizeView”标签如下,完全期望它会失败:

<AuthorizeView Context="auth" Roles="Admin">
<Authorized>
Content
 </Authorized>
    <NotAuthorized>
        You do not have access to this page.
    </NotAuthorized>
</AuthorizeView>

但它工作正常。尽管我没有设置任何授权,但我仍能看到“内容”部分。我假设这默认为 Windows 身份验证(这是我在 Blazor 应用程序中使用的),但我没有指定在任何地方使用 AD 授权。

谁能指出我要去哪里,或者帮助我理解默认情况下它是如何工作的,以及它从哪里拉出这个“管理员”角色?

标签: asp.netauthorizationblazor

解决方案


您可以使用授权控制和限制对资源的访问。您可以根据用户的角色、声明和授权策略来控制访问。

使用上面的 AuthorizeView 并将 Roles 属性设置为“Admin”,您告诉 Blazor 如果用户属于 Admin 角色,则他有权访问 Authorized 元素中的内容。

我猜您已将 Blazor 应用设置为在创建应用时通过选择 Windows 身份验证来对访问您的应用的用户进行身份验证,对吗?

当您尝试访问您的应用程序时,系统会要求您提供从 IIS(快速)传递到您的应用程序的凭据...

粗略地说,声明原则(或 Windows 原则)对象由 Blazor 创建并作为 AuthenticationState 对象传递给名为 ServerAuthenticationStateProvider 的对象。该对象,即 AuthenticationState 对象也提供给 AuthorizeView,其基类 AuthorizeViewCore 包含调用 IAuthorizationService 的逻辑,将声明原则传递给它。现在授权服务检查 Claims Principle 对象,它有什么声明,它有什么角色,当然它会查找值为“Admin”的角色声明,如果找到,则返回 true,并在管道的末尾行决定允许您访问受限制的内容。

它从哪里拉出这个“管理员”角色

如果您有一个或来自 Windows 用户帐户的 Windows AD 等。请记住,您告诉向导您要使用 Windows 身份验证(这是我的假设,否则我所说的一切都可能是错误的)。

你最好去看看文档,熟悉一下 AuthenticationStateProvider、ServiceAuthenticationStateProvider 等服务。


推荐阅读