我正在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配置才能实现,我可以在其中选择首选的声明。
答案 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值)以使其可用于应用程序,该参数会影响此功能索赔清单?有定制空间吗?希望它可以帮助更好地理解我的问题。