如何填充 Azure Active Directory B2C 用户自定义用户属性?
Posted
技术标签:
【中文标题】如何填充 Azure Active Directory B2C 用户自定义用户属性?【英文标题】:How to populate Azure Active Directory B2C user custom user attributes? 【发布时间】:2021-03-03 01:16:33 【问题描述】:我已经成功地使用 curl 在我的 Azure Active Directory 租户中获取和更新用户的邮政编码,使用如下命令:
curl -X GET https://graph.microsoft.com/v1.0/users/<userGuid>?\$select=displayName,givenName,postalCode,xyz -H "Authorization: Bearer $AAD_BEARER_TOKEN"
这会显示 displayName、givenName 和 postalCode,但会忽略我在 portal.azure.com 上使用 Web 浏览器 UI 创建的自定义字符串属性 xyz。
请注意,由于我在 Windows 上使用 cygwin bash,因此我必须避开我的美元和 & 符号。
如何使用 curl 填充我创建的名为 xyz 的新字段?
我已经尝试过using open extensions,但样本不起作用(可能是因为它们不包含不记名令牌并且它们没有指定特定用户)。我可以看到我在 portal.azure.com 上使用 Web UI 创建的自定义属性“xyz”吗?
curl -X GET https://graph.microsoft.com/v1.0/me?\$select=id,displayName,mail,mobilePhone\&\$expand=extensions
这给了我“InvalidAuthenticationToken”。当我添加不记名令牌时,我得到
Resource '1acbf9cc-d931-4ff3-bafe-218693fba30e' does not exist or one of its queried reference-property objects are not present.
2021 年 3 月 2 日星期二晚间更新:
真丢脸!我忘记了最重要的问题:如何发布/修补一个新值,以便获取一些东西(GET)?我无法判断 GET 是否有效,因为该值为空。
2021 年 3 月 3 日星期三上午更新: 我终于找到了the docs on custom attributes,它说我需要在 TrustFrameworkExtensions.xml 中修改我的自定义策略。斯坦利:这是你做的吗?我不清楚 InputClaims、PersistClaims 和 OutputClaims 的 XML。我需要编辑此 XML 并上传吗?
【问题讨论】:
【参考方案1】:据我了解,您希望通过 Microsoft Graph API 获取用户的自定义属性值。
如果是这样,$select
参数中的属性xyz
应该是:extension_<your B2C application ID remove all '-' characters>_xyz
在我这边,我可以在这里找到我的 B2C 应用程序 ID:
我有一个自定义属性id4GTM
:
如果我想获取一个用户的值,属性名应该是:extension_48c33b45c4f8419eb9d97a0f3ff1817b_id4GTM
,请求URL应该是:
GET https://graph.microsoft.com/v1.0/users/8bbd6746-02c7-41a6-97ca-c745c8d27a23?$select=displayname,extension_48c33b45c4f8419eb9d97a0f3ff1817b_id4GTM
结果:
更新:
如果您想通过 Micorsoft Graph API 为用户设置 B2C 自定义属性,请尝试以下请求:
请求网址:
PATCH https://graph.microsoft.com/v1.0/users/<user guid>
请求正文:
"extension_d98794e6f3ca42a6b755d6f9cca552e1_xyz": "<value you want to set>"
我这边如下:
尝试获取这个值:
如果您还有其他问题,请告诉我:)
【讨论】:
谢谢斯坦!这是我的尝试: curl -X GET graph.microsoft.com/v1.0/users/<userguid>?\$select=displayName,givenName,postalCode,extension_d98794e6f3ca42a6b755d6f9cca552e1_xyz -H "Authorization: Bearer $AAD_BEARER_TOKEN" "@odata.context":"graph.microsoft.com/v1.0/… Ben"," givenName":"Ben","postalCode":"11073" 也许我需要先设置一个值?请查看我的更新。 @user3477493,如果您只是想通过 Microsoft graph API 设置/获取您的 B2C 用户自定义属性,则无需使用 B2C 自定义策略。是的,您需要先设置它,否则将不会返回此值。我已经更新了关于如何使用 Microsoft Graph API 为用户设置自定义属性值的答案 废话!我没有仔细看你的屏幕截图!又给我丢脸了!您必须使用默认情况下未出现在注册列表中的特殊应用注册(您突出显示的)。您的补丁示例也有效!遗憾的是,Microsoft 文档没有包含修补新值的示例。 (由于使用错误的 AppId 来获取标准属性,我假设我有写入 AppID)。我希望这对其他人也有帮助!感谢您的帮助! @user3477493 很高兴知道它有帮助:)以上是关于如何填充 Azure Active Directory B2C 用户自定义用户属性?的主要内容,如果未能解决你的问题,请参考以下文章
尝试从 Azure AD 获取访问令牌时获取响应代码 400
如何从 Azure Active Directory 检索用户信息
Azure Active Directory 如何支持将 Okta 作为 IDP 进行联合?
如何在与 Azure Active Directory 关联的 Azure SQL 数据库级别创建不同的资源组