从c# MVC应用程序调用Okta API时接收到错误的请求
本文关键字:错误 请求 API MVC 应用程序 调用 Okta | 更新日期: 2023-09-27 18:17:12
我正在创建一个示例应用程序(即概念验证),用于使用Okta平台创建用户。我正在使用API调用,但在从Visual Studio 2013更新5运行c# MVC应用程序到我的Okta开发实例时,始终收到"BAD REQUEST"。我想知道问题是否存在于CORS和本地应用程序之间?
到目前为止我写的是:
-
使用Postman测试API调用到我的开发环境和调用工作(即,用户在我的Okta开发管理环境中创建)
-
创建一个API令牌,并在授权头
中使用前缀"SSWS"调用它 使用
HttpClient
和.PostAsJsonAsync()
方法进行API调用当使用API调用
/api/v1/users?limit=25
和.GetAsync()
调用GET时,我的应用程序代码按预期工作使用以下Api调用:/Api/v1/users?激活=false(创建一个带有密码的用户;
使用http://json2csharp.com/创建符合Okta JSON层次结构的c#类(从Okta的Postman API库获得)
使用上面的类,在Visual Studio的文本查看器中显示的JSON(在分步执行代码时获得)在粘贴到Postman
时与POST调用一起工作。HttpResponse
包含错误信息" the request body was not well-formed"
下面是用于创建和序列化(使用Json.NET) c#类的代码:
RootObject root = new RootObject();
root.profile = new Profile();
root.profile.firstName = model.FirstName;
root.profile.lastName = model.LastName;
root.profile.email = model.Email;
root.profile.login = model.UserName;
root.credentials = new Credentials();
root.credentials.password = new OktaTest.Models.Password();
root.credentials.password.value = model.Password;
string rootJson = JsonConvert.SerializeObject(root);
这会产生以下JSON(包含虚拟数据):
{"profile":{"firstName":"Test","lastName":"User","email":"user@test.org","login":"user@test.org"},"credentials":{"password":{"value":"Testing123"}}}
下面是发出POST调用的代码行:
HttpResponseMessage responseMessage = await client.PostAsJsonAsync(url, rootJson);
下面是设置Accept报头的行:
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
因为我能够在邮差中使用JSON,并且因为JSON在使用JSONLint时是有效的,所以我认为问题不在于JSON,而在于我的本地应用程序和开发环境之间的安全性。是否应该只在托管应用程序中运行此测试,以便在Okta管理环境的CORS部分中显式地分配站点?在这一点上,我仍在研究和实验,我不确定我错过了什么,但我想我已经接近了。
任何建议或指导将不胜感激!谢谢你!
我建议您使用Okta c# SDK,您可以使用Okta. core . client NuGet包将其添加到您的应用程序中。
一个示例控制台应用程序展示了如何使用它来创建Okta用户:https://github.com/oktadeveloper/okta-sdk-dotnet-console-user-create
我希望这对你有帮助!