gpt4 book ai didi

microsoft-graph-api - 如何使用 Microsoft Graph 和 SDK 更新现有 B2C 用户的身份集合

转载 作者:行者123 更新时间:2023-12-04 15:32:10 25 4
gpt4 key购买 nike

我正在尝试更新 identities Azure AD B2C 租户中现有用户的集合。具体来说,我试图添加另一个 federated用户的身份条目。

根据Microsoft Graph documentation这应该是可能的,前提是我:

  • 分配 User.ManageIdentities.All对我用来进行图形调用的客户端的许可
  • 发送整个现有身份集合,并附加新的身份条目(这也确保在请求中也发送具有 signInType userPrincipalName 的现有身份)

  • 我已在 B2C 租户中注册了一个应用程序,并为其分配了访问 Microsoft Graph 的特定权限。我正在使用客户端凭据流来获取具有适当权限的访问 token roles宣称。我可以成功获取访问 token ,并通过检查发布的 JWT 确认了所需权限的存在。

    我也在使用 Microsoft.Graph SDK从 C# 代码调用图 v1.0 端点。我有一个我正在尝试更新的现有用户,它有一个众所周知的 userId (objectId)。使用访问 token 和 GraphServiceClient我可以成功检索到用户。例如,下面的代码工作正常

    var user = await client.Users[userId].Request()
    .Select(o => new { o.Id, o.DisplayName, o.Identities })
    .GetAsync();

    检索用户后,我尝试向 identities 添加另一个条目。属性并为用户发出更新图调用。请注意,SDK 需要更新调用以仅使用本地创建的对象,即您不能发送先前通过 SDK 获取的现有对象。

    我的完整更新代码如下

    async Task TryUpdateUser(GraphServiceClient client, string userId)
    {
    var user = await client.Users[userId].Request()
    .Select(o => new { o.Id, o.DisplayName, o.Identities })
    .GetAsync();

    // Need to re-create the existing identities since Graph client rejects existing items in requests
    var identities = user.Identities.Select(o => new ObjectIdentity
    {
    SignInType = o.SignInType,
    Issuer = o.Issuer,
    IssuerAssignedId = o.IssuerAssignedId
    }).ToList();

    identities.Add(new ObjectIdentity
    {
    SignInType = "federated",
    Issuer = "TestIssuer",
    IssuerAssignedId = "testingId"
    });

    var updatedUser = new User
    {
    Identities = identities
    };

    await client.Users[userId].Request().UpdateAsync(updatedUser);
    }

    然而,当 UpdateAsync被调用时抛出异常,响应类型为 BadRequest .错误消息指出:

    Message: Adding a non-federated user signInType is not permitted if the user only has social/federated identities or no identities set. Please recreate the user with a non-federated identity along with existing identities if any.



    我显然是在尝试创建一个联合用户 signInType,所以引用非联合用户 signInType 的错误消息文本让我感到困惑。

    我究竟做错了什么?

    最佳答案

    目前,我们无法将 Azure AD b2c 联合用户从一个身份提供者迁移到另一个身份提供者并为 Azure AD b2c 联合用户添加另一个身份提供者或非联合身份(用户名或电子邮件地址)。如果您尝试这样做,您将收到上述错误。

    enter image description here

    此外,请注意我们可以为 Azure AD b2c 本地用户添加一个身份提供者。
    enter image description here

    关于microsoft-graph-api - 如何使用 Microsoft Graph 和 SDK 更新现有 B2C 用户的身份集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61051028/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com