Azure B2C 将联合登录链接到本地创建的用户帐户

问题描述 投票:0回答:1

我一直在尝试遵循此操作:link-local-account-with-federated-account

基本上我想做的就是从外部租户创建(邀请)一个用户作为联合用户,并能够在创建时向该用户分配自定义属性。

但是,有一些事情我无法从自述文件中弄清楚。如果有人能阐明这些,我将非常感激:

  1. 创建用户对象(本地)时,会分配一个issuerAssignedId,这显然是联邦用户的oid。在用户执行登录之前如何获取该信息?
  2. 在创建的用户对象中,有 SignInType.oidToLink,但在下面的说明中谈到了signInNames.oidToLink。是不是有什么地方写错了,或者我漏掉了什么?
  3. 在自述文件中它谈到了 oidToLink,但在 TrustFrameworkExtensions xml 文件中,它有 objectIdToLink。这只是一个错字还是我错过了什么?

应用程序基础是 DotNet + Angular,使用 Microsoft Angular 身份验证库。

我读了很多书,但无法弄清楚这一点,也找不到任何清楚描述该过程的文章。预先感谢:)

我执行了以下步骤:

  1. 按照说明运行设置工具
  2. 创建了自定义属性extension_requiresMigrationBool
  3. 在上面链接的存储库中上传自定义策略(编辑文件中的任何密钥等)
  4. 使用以下代码在 DotNet 中通过图形创建了一个用户(可以确认该用户已使用所有自定义属性成功创建):
            var userRequest = new User
            {
                AccountEnabled = true,
                UserPrincipalName = "<some_email_com>#EXT#@<domain>.onmicrosoft.com",
                UserType = "Member",
                DisplayName = user.Email,
                MailNickname = "NewUser",
                PasswordProfile = new PasswordProfile
                {
                    ForceChangePasswordNextSignIn = false,
                    Password = "Test1234"
                },
                AdditionalData = new Dictionary<string, object>
                {
                    { ExtensionAttribute("custom0"), false },
                    { ExtensionAttribute("custom1"), someValue },
                    { ExtensionAttribute("custom2"), someValue },
                    { ExtensionAttribute("custom3"), someValue },
                    { ExtensionAttribute("requiresMigrationBool"), true }
                },
                Identities = new List<ObjectIdentity> {
                    new ObjectIdentity()
                    {
                        SignInType = "oidToLink",
                        Issuer = "<domain>.onmicrosoft.com",
                        IssuerAssignedId = "<WHERE DO I GET THIS OID?>"
                    }
                }
            };
  1. 我运行上述 SignUpOrSignIn 策略,并尝试使用新创建的用户中使用的相同电子邮件地址登录 -
  2. 我收到以下消息:
Selected user account does not exist in tenant 'xxxxxxxxxxxx' and cannot access the application 'app_id' in that tenant. The account needs to be added as an external user in the tenant first. Please use a different account.
azure-active-directory azure-ad-b2c azure-ad-msal azure-ad-b2c-custom-policy
1个回答
0
投票

我在这里详细地写了这个。

  1. 这是“发行者”中用户的 objectID(“issuerAssignedId”),即 contoso.com,即编写者预先定义了一个 Identity 数组。这通常会在联合期间添加。

  2. 参考这个

SignInType.oidToLink 是身份数组中的一个属性。

signInNames.oidToLink 是您搜索此身份的方式。

  1. 参见 1.objectIdToLink 映射到“issuerAssignedId”。

其他可能有帮助的帖子是这里这里

© www.soinside.com 2019 - 2024. All rights reserved.