gpt4 book ai didi

asp.net-core - 如何在 ASP.Net Core 应用程序中向 Azure AD 身份验证用户添加自定义声明?

转载 作者:行者123 更新时间:2023-12-05 02:49:53 25 4
gpt4 key购买 nike

我们正在使用 Angular SPA 客户端构建一个 ASP.net 核心 Web API。对于身份验证,我们已经实现了具有 Multi-Tenancy 的 Azure AD。对于 Web API 身份验证/授权,我们遵循了 this Microsoft sample .这使用 Microsoft.Identity.Web MSAL 库来验证源自 Angular SPA 的授权代码。在 Azure AD 应用程序注册中,我们管理应用程序的正确范围,但我们无法理解声明是如何管理的。

在以前的应用程序中,我在我的应用程序中运行身份验证服务器 IdentityServer4 作为中间件,允许在我的应用程序中进行身份验证和发布声明。我正在使用 UserManager 添加或删除对用户的声明。声明信息存储在我的数据库的用户表中,然后包含在发布的 cookie 中并可供 SPA 和 Web API 使用。

在当前的应用程序中,我们完全依赖 Azure AD,现在我觉得我缺少一 block 拼图来管理用户声明(以及它们包含在 cookie/ token 中)。 问题:当用户管理和身份验证发生在 Azure AD 而不是我的应用程序中时,我如何管理特定于我们应用程序的声明?

澄清一下:This Microsoft document提到了三种使用应用程序角色的方式:Azure AD 应用程序角色、Azure AD 安全组和应用程序角色管理器。这是我认为是我需要的正确功能的最后一个:

With this approach, application roles are not stored in Azure AD at all. Instead, the application stores the role assignments for each user in its own DB — for example, using the RoleManager class in ASP.NET Identity.


我查看过但没有给我答案的一小部分文档:

  • This previously linked Microsoft document确实提到在 ASP.NET Identity 中使用 RoleManager 类,但没有解释如何将其实现为与 Azure AD 的集成,以便 cookie/ token 包含角色(或转换为声明的角色)。

  • 我已阅读有关使用 MS Graph 的信息 schema extensionsincluding these in claims但是,该文章还指出,任何应用程序在征得同意后都可以读取和写入这些扩展属性。暗示这不是向应用程序提供任何声明的安全方式,因为可以从应用程序外部触及这些值

  • Documentation解释如何验证用户声明。

  • Tailspin scenario ,提到在应用程序上使用角色而不是安全组。但没有任何迹象或暗示如何将其作为声明包含在 Azure AD 中。并关注 this很明显,它不受应用程序的控制。

  • This documentthis解释了有关转换声明或添加自定义声明的信息,但这是用户帐户的基本条件,而不是设置声明的应用程序。这些条件也需要在域中而不是在应用程序中进行管理。

  • Similar question ?但没有答案。

最佳答案

在与 Microsoft Azure AD 支持人员讨论后,我认为这是不可能的。


以下是我认可的替代方法。很高兴听到其他可能的消息:

正在关注 this article from Microsoft我们可以使用自定义信息添加角色,方法是:

  • Azure AD 应用角色
  • Azure AD 安全组
  • 或者在应用程序中添加一个身份,然后实现 RoleManager 类。这意味着应用程序数据库将拥有一个身份,这在某种程度上违背了 Azure AD 的目的。

其他信息也可以添加到 Microsoft Graph 中,如 blog post 中所述拉斯穆瑟克尔森。然而,我认为这不适用于任何与安全相关的项目(例如权限或付费模块许可证),正如 Microsoft 在 this article 中所解释的那样。那:

extension properties are accessible by any consented application in an organization, not just for the application to which they are registered.

如果租户同意,其他应用程序可以读取和写入此属性。

编辑:图谱 API 能够更新应用程序角色。应用程序可以调用它来安全地更新应用程序角色。

我的研究使我得出结论,Azure AD 实际上不能被 Multi-Tenancy SaaS 解决方案用作唯一的身份提供者。应用程序需要提供一些身份来管理额外的声明,例如详细的应用程序权限和付费模块访问。

关于asp.net-core - 如何在 ASP.Net Core 应用程序中向 Azure AD 身份验证用户添加自定义声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63882343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com