具有 Organizational/Office 365/Microsoft 帐户身份验证的 Blazor(服务器端);如何做本地多重角色?

Blazor (Server-Side) with Organizational/Office 365/Microsoft Account Authentication; How to do Local Multiple Roles?

这里有一个有点类似的问题,8 个月前有人问过但没有回复: How do I implement Office 365 Authentication in ASP.NET Core and Blazor (Server-Client app)

我所拥有的是 Visual Studio Community 2019 中的一个新项目:

  1. 类型是 Blazor 服务器端应用。
  2. 我在创建项目时选择了"Work or School"进行身份验证。使用 Microsoft 帐户。
  3. 我选择了组织 "Single Tenant" 帐户类型。填写我的组织域。
  4. 我转到了我的 Azure 门户,应用程序出现在那里。 Tenant/Client ID 匹配 appsettings.json.
  5. 中的 ID
  6. 当我启动该应用程序时,它会要求我的组织登录,并且它会重定向到主页!

问题是所有用户都具有相同级别的访问权限。

我想创建一个页面(对管理员可见),我可以在其中:

  1. 通过搜索活动目录添加组织用户。
  2. 分配角色(存储在我的本地数据库中)。

我的问题是:

你可能会将所有用户存储在本地数据库中,如果你正在开发一个多租户应用程序或一个将被其他公司使用的应用程序等,那么我可能会在本地数据库等方面走这条路. 如果它仅适用于您的组织,并且您可以访问 aad,我会在应用程序注册清单中创建角色,然后在企业应用程序中分配它们。方法如下:https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

然后在 blazor 中至少对于 .netcore,我会用这样的东西访问它们

只有管理员或超级用户才能看到。

或授权属性。 https://docs.microsoft.com/en-us/aspnet/core/security/blazor/?view=aspnetcore-3.1#role-based-and-policy-based-authorization

希望能帮助您入门,

更新

根据您的更新,您想知道是否可以在没有管理员访问权限的情况下执行此操作。从 aad 对用户进行身份验证后,您可以添加一些代码来查询数据库,获取用户名,并根据 https://visualstudiomagazine.com/articles/2019/11/01/authorization-claims.aspx

向 claimsprincipal 添加角色或其他声明