【问题标题】:Blazor (Server-Side) with Organizational/Office 365/Microsoft Account Authentication; How to do Local Multiple Roles?具有组织/Office 365/Microsoft 帐户身份验证的 Blazor(服务器端);如何做本地多个角色?
【发布时间】:2020-09-04 03:09:09
【问题描述】:

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

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

  1. 类型是 Blazor 服务器端应用程序。
  2. 我在创建项目时选择了“工作或学校”进行身份验证。使用 Microsoft 帐户。
  3. 我选择了组织的“单租户”帐户类型。填写我组织的域。
  4. 我访问了我的 Azure 门户,应用程序出现在那里。租户/客户端 ID 与 appsettings.json 中的 ID 匹配。
  5. 当我启动该应用程序时,它会询问我的组织登录名,然后它会重定向到主页!

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

我想要创建一个页面(管理员可见),我可以:

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

我的问题是:

  • 如何在我的应用程序中为 o365 用户分配角色?范围是我的应用程序,因此只能存储在本地数据库中。
  • 如果上述方法不可行,实现相同目标的替代方法是什么?

【问题讨论】:

    标签: c# authentication azure-active-directory office365 blazor


    【解决方案1】:

    您可能可以将所有用户存储在本地数据库中,如果您正在开发多租户应用程序或其他公司使用的应用程序等,那么我可能会按照本地数据库等方式走这条路。 如果它仅适用于您的组织,并且您可以访问 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 向声明主体添加角色或其他声明。

    【讨论】:

    • 非常感谢,这是一个有效的解决方法。我刚刚尝试过,它有效!我会等几天看看是否有没有管理员访问 AAD 的解决方案。
    • 确定有,如果您愿意,一旦您从 aad 对用户进行身份验证,您可以添加一些代码来查询数据库,获取用户名,并将角色或其他声明添加到 claimprincipal, visualstudiomagazine.com/articles/2019/11/01/…
    • 请将此作为官方答案,我会接受的。
    • 刚刚添加,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2016-06-04
    • 2015-09-16
    • 2016-05-31
    • 2021-04-30
    相关资源
    最近更新 更多