在运行时使用自定义声明 Azure Active Directory

Posted

技术标签:

【中文标题】在运行时使用自定义声明 Azure Active Directory【英文标题】:Using custom claims at run time Azure Active Directory 【发布时间】:2020-06-08 01:56:36 【问题描述】:

您好,我在 Azure Active Directory 上注册了两个应用程序 A 和应用程序 B,我正在尝试在 .NET Core 3.0 中验证从应用程序 A 到应用程序 B 的请求。我正在使用https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow 中提到的凭据流。

由于我有许多客户端需要访问应用 B,我只想使用应用 A,而不是创建与客户端数量一样多的应用注册,并在用于授权每个请求的 JWT 令牌中引入自定义值。

经过一番调查,我发现可以将自定义声明添加到一个应用注册所使用的 JWT 令牌到另一个应用,从而创建用户对象的扩展 (Azure AD Custom Claims in JWT)。但是,我在文档https://docs.microsoft.com/en-us/graph/extensibility-overview 中没有看到如何为应用注册添加扩展

是否可以实现此场景?如果是这样,我如何在执行请求时将自定义值作为自定义声明传递并配置应用程序 B 以允许这样做?

【问题讨论】:

【参考方案1】:

在我看来,您正在尝试解决预期的设计问题。

如果客户端应用程序应具有不同的权限,则应将它们注册为对 API 具有不同权限的不同应用程序。 这样,您就可以按照预期的方式使用该平台,并且它将与您一起工作。

【讨论】:

以上是关于在运行时使用自定义声明 Azure Active Directory的主要内容,如果未能解决你的问题,请参考以下文章

如何向 azure b2c 访问令牌添加自定义声明?

AD B2C 自定义策略自定义声明出现错误“无法验证提供的信息”。注册时

如何使用 api 连接器和 asp net core web api 通过自定义声明丰富 azure b2c 令牌

使用自定义声明导入 Firebase 用户

使用 Windows 身份验证时向身份添加自定义声明

在登录时循环自定义声明 - Asp.net 核心