在非常简单的属性更新过程中,Okta'请求主体的格式不正确'

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

我正在从.Net后端调用okta API。在创建用户时(下面代码段的第一部分),它工作正常,因此我知道令牌正确无误,并且可以确认新用户存在。

[随后,我还更新了我添加到用户的名为'Site'的属性。尝试为该属性分配值时,它在“ UpdateAsync”行上引发异常,表明请求正文的格式不正确

            var user = await _oktaClient.Users.CreateUserAsync(new CreateUserWithPasswordOptions
            {
                Profile = new UserProfile
                {
                    FirstName = value.FirstName,
                    LastName = value.Surname,
                    Email = value.Email,
                    Login = value.Email,
                },
                Password = value.Password,
                Activate = true,
            });

            var newUser = await _oktaClient.Users.GetUserAsync(user.Id);

            newUser["site"] = Site;
            await newUser.UpdateAsync(); // This line throws!

注意:我并非总是这样,我以前是分配给user对象,然后在更新用户对象上的“站点”后调用UpdateAsync()。这是一种替代方法,因为我正在尝试不同的操作(即再次从API获取用户)。两种方法均无效。

非常奇怪的是,它一直在起作用,我对此有100%的把握。我正在“按我们的说法”浏览我的okta用户目录,并且有大量的用户,所有用户的网站属性均已填充。以前没有问题。我相信某些事情必须进行更新okta的结尾,由于某种原因,现在由于某些原因我不喜欢我的请求,但是无论哪种情况,我都需要一种解决方法。

我可以确认Site既不为null也不为空,它只是一个字符串。

更新

我刚刚在okta的SetProperty上发现了一个IResource扩展名,在尝试更新用户之前调用此扩展名会导致相同的问题。

对此有任何帮助,不胜感激。

c# asp.net-core okta
1个回答
1
投票

看上去自定义属性无法再分配给User对象本身,但需要在用户个人资料中:newUser.Profile["site"] = Site;

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