根据AADB2C属性值在AAD中查找用户

Look up user in AAD based on AADB2C attribute value

如果我在 Aure AD B2C 中有一个用户是基于 Azure AD(企业)身份创建的(如此处所述:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom),AADB2C 中是否存储了一个属性让我可以查找(使用 Graph API 或类似的)AAD 中的用户对象?我看到在 AADB2C 属性中有 userPrincipalNameissuerUserId 但如果这些中的任何一个与存储在 AAD 中的任何值相匹配,对我来说并不明显。

谢谢!

马丁

对于外部账户,外部发行者(即Azure AD)和外部用户标识符(即Azure AD用户的对象标识符)被写入"userIdentities" 属性 Azure AD B2C 目录中的用户对象,其中 "issuerUserId" 属性 包含外部用户标识符的 Base64 编码:

{
    "userIdentities": [
        {
            "issuer": "contoso.com",
            "issuerUserId": "Mjk2NzdlNTAtY2MwZS00MmU5LWJhNWMtZjFmMDdkZTUwMDhm"
        }
    ]
}

要通过外部帐户查找用户对象,可以调用以下图形API操作,其中"x/issuerUserId"值设置为外部用户标识符的十六进制编码:

GET https://graph.windows.net/myorganization/users?$filter=userIdentities/any(x:x/issuer eq 'contoso.com' and x/issuerUserId eq X'32393637376535302d636330652d343265392d626135632d663166303764653530303866')

更新:

来自外部身份提供者的 issuerUserId 应被视为字符串而不是十进制。在上面的示例中,当您使用 base 64 解码 "Mjk2NzdlNTAtY2MwZS00MmU5LWJhNWMtZjFmMDdkZTUwMDhm" - 它 returns 一个 guid 29677e50-cc0e-42e9-ba5c-f1f07de5008f。对于 facebook,issuerUserId 将是一个数字,但仍应视为字符串。

下一步将使用字符串到十六进制转换器,然后在查询中使用该值。