天蓝色广告,如何为OIDC / userinfo请求添加用户声明

时间:2019-11-08 08:23:36

标签: azure azure-active-directory openid-connect

我正在Azure AD中实现一个新的“已注册”应用程序,为此我需要在用户身份验证过程中获取用户的Samaccountname值作为首选声明。 这些应用程序可以处理oidc请求,因此我试图找到一种在用户个人资料(获取https://graph.microsoft.com/oidc/userinfo)中添加新声明的方法,该声明包含从本地活动目录同步的SamaccountName属性“ extension_cda8b3eafdfb4aa0b27ca9860634fd74_sAMAccountName”。 不幸的是,经过大量的研究和测试,我找不到实现此目标的方法。 非常感谢您对此主题的任何经验,谢谢

在我探索声明映射策略技术(https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-claims-mapping)之前,由于应用程序也可以实现Oauthv2,因此在身份令牌中创建并返回自定义声明。 但是我在应用程序中没有任何灵活性来更改我可以从令牌(硬编码)读取的声明列表。 这种灵活性只有通过oidc配置才能实现,我可以在其中选择首选的声明。

2 个答案:

答案 0 :(得分:0)

根据我的理解,您要将自定义属性Samaccountname添加到Azure AD。

您应该使用Azure AD Graph API来实现它:

POST https://graph.windows.net/contoso.onmicrosoft.com/applications/269fc2f7-6420-4ea4-be90-9e1f93a87a64/extensionProperties?api-version=1.5 HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1Qi...r6Xh5KVA

{
    "name": "Samaccountname",
    "dataType": "String",
    "targetObjects": [
        "User"
    ]
}

使用Azure AD Graph Explorer对其进行快速测试。

查看详细信息here

请注意,此API仅支持v1.0 Azure AD应用程序(不支持个人帐户)。

此外,Microsoft强烈建议您使用Microsoft Graph代替Azure AD Graph API来访问Azure Active Directory资源。 有关如何使用Microsoft Graph API向Azure AD用户添加自定义属性的信息,请参阅:Add custom data to users using open extensions


更新:

对不起,我很抱歉。如果答案不是一个,请不要添加答案。您可以编辑问题以更新您的帖子。

“ extension_cda8b3eafdfb4aa0b27ca9860634fd74_sAMAccountName”这样的自定义属性格式由Azure AD Graph(而不是Microsoft Graph)托管。无法通过Microsoft Graph查看自定义属性。

您可以调用AAD Graph API端点以获取预期的自定义属性:

GET https://graph.windows.net/myorganization/users

AAD Graph Explorer中进行快速测试。

答案 1 :(得分:0)

非常感谢,但是我意识到我的问题令人困惑。在我的情况下,内部部署Adconnect同步中已经存在samaccountname扩展属性。其中PS C:\ Users \ HEDEP>(Get-AzureADUser -ObjectId $ UserId).ToJson()您会在列表中找到类似的内容:“ extension_cda8b3eafdfb4aa0b27ca9860634fd74_sAMAccountName”:“ sac_user”  我的应用程序正在使用https://graph.microsoft.com/oidc/userinfo来获取用户声明,但查看返回的值似乎非常有限且静态:     “ sub”:“ S3FAHBnY4Crv4MA-t8DFIYcUYV6EamxbkD1iAqMBvBg”,     “ name”:“ aaa bbb”,     “ family_name”:“ bbb”,     “ given_name”:“ aaa”,     “ picture”:“ https://graph.microsoft.com/v1.0/me/photo/ $ value”,     “ email”:“ vv@aa.onmicrosoft.com”因此,我想知道是否有一种方法可以在此列表中添加samaccountname扩展名(或间接地添加samaccountname值)以使其可用于应用程序,该参数会影响此功能索赔清单?有定制空间吗?希望它可以帮助更好地理解我的问题。