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

M H*_*ner 5 azure-active-directory azure-ad-b2c

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

谢谢!

马丁

Chr*_*ett 4

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

{
    "userIdentities": [
        {
            "issuer": "contoso.com",
            "issuerUserId": "Mjk2NzdlNTAtY2MwZS00MmU5LWJhNWMtZjFmMDdkZTUwMDhm"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

要通过外部账户查找用户对象,您可以调用以下 Graph 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')
Run Code Online (Sandbox Code Playgroud)

更新:

来自外部身份提供商的 IssuerUserId 应被视为字符串而不是十进制。在上面的示例中,当您对“Mjk2NzdlNTAtY2MwZS00MmU5LWJhNWMtZjFmMDdkZTUwMDhm”进行 Base 64 解码时,它会返回 guid 29677e50-cc0e-42e9-ba5c-f1f07de5008f。对于 facebook,issuerUserId 将是一个数字,但仍应被视为字符串。

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