Azure active directory 与自定义身份提供程序注册的用户缺少用户名

Azure active directory 与自定义身份提供程序注册的用户缺少用户名,azure-active-directory,azure-ad-b2c,identityserver3,Azure Active Directory,Azure Ad B2c,Identityserver3,最近几个月,我们成功地将现有的Identity Server 3与AAD B2C集成。当然,它是通过以下方式注册为自定义身份提供程序的。当涉及到身份验证本身时,一切都很好。我们现有数据库(位于Identity Server 3后面)中的所有用户都可以毫无问题地登录AAD B2C。你可以猜到,一旦他们第一次登录,他们也会成为Azure Active Directory(B2C租户)用户。 但是,我们最近还注意到,在我们的AAD B2C租户的用户列表中,没有一个拥有正确的用户名和源值(见图)。 有没

最近几个月,我们成功地将现有的Identity Server 3与AAD B2C集成。当然,它是通过以下方式注册为自定义身份提供程序的。当涉及到身份验证本身时,一切都很好。我们现有数据库(位于Identity Server 3后面)中的所有用户都可以毫无问题地登录AAD B2C。你可以猜到,一旦他们第一次登录,他们也会成为Azure Active Directory(B2C租户)用户。 但是,我们最近还注意到,在我们的AAD B2C租户的用户列表中,没有一个拥有正确的用户名和源值(见图)。 有没有人知道我们在Identity Server或Azure AD B2C端(或两者)可能缺少什么,以及不填充这些值的可能原因是什么


当在Azure AD B2C目录中创建外部标识(例如,IdentityServer管理的标识)的用户对象时,将按如下方式创建该对象:

{
    "accountEnabled": false,
    "creationType": null,
    ...
    "userIdentities": [
        {
            "issuer": "...",
            "issuerUserId": "..."
        }
    ]
}
其中,用户标识对象设置如下:

{
    "accountEnabled": false,
    "creationType": null,
    ...
    "userIdentities": [
        {
            "issuer": "...",
            "issuerUserId": "..."
        }
    ]
}
  • issuer属性设置为发出用户标识符的外部身份提供程序的字符串表示形式,例如
    https://myidentityserver3.azurewebsites.net/identity
  • issuerUserId属性设置为外部身份提供程序发布的用户标识符的Base64表示形式

当在Azure AD B2C门户中打开所有用户菜单时,这些外部用户将在用户名列中列出发行人值,在来源列中列出“未知”。

非常感谢您的回答。我明白这一点,但如果我能控制这些值,我还是不明白?这些值是否应在Identity Server端作为声明发布?对我们来说,如果我们可以有一些更有意义的用户名,这样我们就可以将它们与源数据库中的用户关联起来,这将非常合适。您不必控制它们。它们是在IdentityServer的ID令牌中发出的。除了用户标识符之外,还有什么标识源数据库中的给定用户,也可以在IdentityServer的ID令牌中发布?好的,我知道了。例如电子邮件。或者用户名,更好。嗨,克里斯,我不知道这是如何回答我的问题,如何解决这个问题?我应该如何设置上述属性以避免在源列中出现“未知”属性?你刚才说后面的模型是什么样子的,但我想知道如何设置这些字段以便获得适当的值。你有这样的例子吗?抱歉,@markodj,关键是,对于外部用户,你不能设置任何特殊值。i、 e.您无法控制“所有用户”列表中显示的内容。