如何向Azure Active Directory添加可选声明

时间:2018-01-10 14:45:48

标签: azure azure-active-directory acs

我们正致力于在" Daemon or Server Application to Web API"之后对C#MVC Web API进行身份验证。我们希望在Azure Active Directory发布的令牌中添加一些自定义声明,以便在Web API端进行验证。

我们最初的想法是添加'通过编辑清单对守护程序应用程序的这些可选声明,但是我们找不到一个好例子,并且在保存时会出现错误。

Manifest

是否有人可以为我们提供如何添加此自定义声明的良好示例?

甚至更好,还有其他关于如何添加这些自定义声明的想法吗?

4 个答案:

答案 0 :(得分:1)

您无法添加/更改/修改Azure AD发布的声明。

Here您可以找到支持的令牌格式和声明的列表。除此之外的任何事情都应该来自您的申请。

你能更好地描述一下你真正想要实现的目标以及你打算如何做到这一点,以便能够给你更具体的答案吗?

<强>更新

使用Azure AD,您还可以添加多个服务主体并授予他们访问Web API的权限。这基本上与ACS中的服务标识相同。您还可以将服务主体添加到Azure AD安全组。这些组成员身份也将作为令牌中的声明。

使用Azure AD,您可以做得更多。您可以调整API公开的OAuth应用程序角色 - here。一旦您的API公开了任意数量的appRoles,您就可以向公开的特定服务主体授予appRole。这些信息也在服务主体使用client credentials flow获取的令牌中执行。

如果我理解你的问题,这可以解决你的问题。

答案 1 :(得分:1)

我发现包含非基本声明的唯一方法是声明映射策略分配,如下所述:Convert string into MongoDB BsonDocument

例如,要将AAD用户的部门字段添加到令牌中设置的基本声明中,您必须创建策略:

New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"department","JwtClaimType":"department"}]}}') -DisplayName "ExtraClaimsExample” -Type "ClaimsMappingPolicy"

然后将其分配给AAD应用程序的服务主体:

Add-AzureADServicePrincipalPolicy -Id <ObjectId of the ServicePrincipal> -RefObjectId <ObjectId of the Policy>

阅读链接的Microsoft文档以获取更多详细信息。

答案 2 :(得分:1)

请在此处查看有关可选声明的文档-https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims

您可以使用UX或清单编辑来添加通常不包含在令牌中的声明。

请考虑删除此页面上的其余答案,因为它们是不正确的,并提供了错误的信息。

答案 3 :(得分:0)

由于该属性不在列表中,因此使用OptionalClaims看起来不可能,但是我找到了以下解决方案:

documentation

您必须在Azure AD中创建ClaimsMappigPolicy,并将其分配给您的应用程序。