通过另一个系统错误代码更新 Okta 配置文件主:E0000023

问题描述

我们有一个绑定到 Active Directory 的 Okta 实例。所有用户都在 AD 中创建并输入 Okta。配置文件由 AD 掌握。我们已经向 Okta 配置文件添加了几个自定义属性,并希望通过 Okta API 更新它们。这些是未从 AD 映射的自定义字段。在我们尝试通过 API 更新时的所有尝试中,我们得到

{"errorCode":"E0000023","errorSummary":"操作失败,因为用户配置文件是在另一个系统下掌握的"}

有谁知道这是否可能?联系了 Okta 支持人员并阅读了所有文档,这似乎是可能的,但找不到任何说明如何将自定义属性配置为可从其他来源写入的内容

解决方法

我在配置 Okta 租户(也与 Azure Active Directory 集成)时遇到了同样的问题。

这对我有用:

 var oktaDomain = _configuration["Okta:Domain"]?.ToString();
 var oktaPrivateKey = _configuration["Okta:ApiKey"].ToString();

 if (string.IsNullOrEmpty(oktaDomain) || string.IsNullOrEmpty(oktaPrivateKey))
    throw new NullReferenceException("oktaDomain or oktaKey must be present");

 var client = new OktaClient(new OktaClientConfiguration
 {
    OktaDomain = oktaDomain,Token = oktaPrivateKey
 });

 var currentUser = await client.Users.GetUserAsync(userId);
 if (currentUser != null)
 {
    currentUser.Profile["custom_attribute"] = myCustomAttribute;
    await currentUser.UpdateAsync();
 }

我还应该注意,这不会结束您更新自定义配置文件属性的困难。如果声明映射配置不正确,您会发现您的个人资料属性最初会更新。

但是,当用户重新登录时,该值将恢复为从 Azure AD 映射的值(通常为空白)。

为确保值实际保留,您需要前往 Okta 配置文件编辑器,对于您的 Azure Active Directory 配置文件,选择编辑映射。然后,确保您的自定义属性映射如下:

  • Azure Active Directory 至 Okta 用户:appuser.custom_attribute > custom_attribute
  • Okta 用户到 Azure Active Directory:user.custom_attribute > custom_attribute

例如: AAD to Okta Mappings Okta to AAD Mappings

我希望这会有所帮助,当我遇到它时很难解决这个问题。