Azure active directory 来自Azure B2C租户的用户令牌

Azure active directory 来自Azure B2C租户的用户令牌,azure-active-directory,azure-ad-b2c,azure-ad-b2c-custom-policy,Azure Active Directory,Azure Ad B2c,Azure Ad B2c Custom Policy,我必须使用以下命令将用户从Azure Active Directory B2C租户(旧租户)迁移到另一个(新租户) 在oldtenant中,我有一些“用户”(使用@oldtenant.onmicrosoft.com)和一些“Azure AD B2C用户”(使用@otherdomain.com) “用户”是用按钮创建的 “Azure AD B2C用户”是使用按钮创建的 我必须检索用户访问令牌以检查用户的凭据,以便在newtenant中创建用户。 我使用提供的源代码创建了一个API,该API使用用户

我必须使用以下命令将用户从Azure Active Directory B2C租户(旧租户)迁移到另一个(新租户)

在oldtenant中,我有一些“用户”(使用@oldtenant.onmicrosoft.com)和一些“Azure AD B2C用户”(使用@otherdomain.com)

“用户”是用按钮创建的

“Azure AD B2C用户”是使用按钮创建的

我必须检索用户访问令牌以检查用户的凭据,以便在newtenant中创建用户。 我使用提供的源代码创建了一个API,该API使用用户的凭据检索用户令牌。 我还在oldtenant中创建了一个应用程序注册,以允许API访问用户信息

当我尝试为@oldtanent.onmicrosoft.com检索用户令牌时,它可以工作,但当我尝试为用户@otherdomain.com检索令牌时,我得到以下错误:

error_description: "AADSTS50034: The user account {EmailHidden} does not exist in the oldtenant.onmicrosoft.com directory. To sign into this application, the account must be added to the directory.Trace ID: 74d2a027-7011-4ee5-b62e-d022dd861d06.Correlation ID: 07427a5b-494a-44e7-947d-40eb5a4aee66.Timestamp: 2021-05-07 10:22:58Z"

它应该可以工作,但我使用了文档提供的代码。我不明白为什么它不起作用。

当您使用“创建Azure AD B2C用户”按钮创建消费者帐户(B2C帐户)时,真正的用户原则名称应该是这样的:
{objectID}@oldtanent.onmicrosoft.com
,尽管您可以使用这种邮件格式登录B2C
xxx@otherdomain.com

背景中的数据实际上是以下格式:

{
    "id": "d5342d11-67e0-46ed-865b-20e3138ecf1f",
    "creationType": "LocalAccount",
    "userPrincipalName": "eb37ce98-8461-4f9b-ab57-e6ebb3b791c6@allentest001.onmicrosoft.com",
    "identities": [
        {
            "signInType": "emailAddress",
            "issuer": "allentest001.onmicrosoft.com",
            "issuerAssignedId": "allen3@jmaster.onmicrosoft.com"
        },
        {
            "signInType": "userPrincipalName",
            "issuer": "allentest001.onmicrosoft.com",
            "issuerAssignedId": "eb37ce98-8461-4f9b-ab57-e6ebb3b791c6@allentest001.onmicrosoft.com"
        }
    ]
}
在本例中,我可以使用
allen3@jmaster.onmicrosoft.com
,但当我需要获取用户访问令牌时,我需要使用
eb37ce98-8461-4f9b-ab57-e6ebb3b791c6@allentest001.onmicrosoft.com

B2C认证不同于AAD认证。要调用Microsoft Graph,我们需要使用AAD身份验证(调用Microsoft Graph不支持B2C身份验证)

在这种情况下,
eb37ce98-8461-4f9b-ab57-e6ebb3b791c6@allentest001.onmicrosoft.com
是获取用户令牌和调用Microsoft Graph所需的UPN

因此,您应该首先列出您的B2C消费者用户,以找到他们的
userPrincipalName
s,以便采取下一步行动

您可以轻松地输入。

是的,我正在查找“标识”字段以获取UPN。我为Microsoft Graph SDK查询添加了代码
stringfs=string.Format(“userPrincipalName eq'{0}',username);var su=await client.Users.Request().Filter(fs).Select(“Identity,userPrincipalName”).GetAsync()
if(su.Count()==0){fs=string.Format(“identies/any(id:id/issuer eq'{0}和id/issuerasignedid eq'{1}')”,租户,用户名);su=wait client.Users.Request().Filter(fs)。选择(“identies,userPrincipalName”).GetAsync();}
if(su.Count()!=0){userUpn=FirstOrDefault().userPrincipalName;}