java - wso2 身份服务器 oauth2 请求返回 HTTP 错误 415

标签 java oauth oauth-2.0 wso2 wso2-identity-server

我的 wso2 身份服务器有问题,这可能是概念错误,但我真的不明白我做错了什么。

我有一个 JAVA REST 应用程序,需要使用 oauth2 标识服务器验证用户。我已经在 debian 机器上安装了 wso2 Identity Server 5.0.0。我创建了最终用户并创建了服务提供者来获取 clientid 和客户端 key 。

我遵循的流程是这样的:

我的APP使用以下java代码发送请求:

URL url = new URL(desturl);
HttpsURLConnection huc = (HttpsURLConnection) url.openConnection();
huc.setRequestMethod("POST");
huc.connect();
huc.setConnectTimeout(10000);
rd = new BufferedReader(new InputStreamReader(huc.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
 content += line;
}

我的应用程序以 POST 形式发送以下 http 请求:

https://<wso2is>:9443/oauth2/authorize?response_type=code&client_id=<xxx>&state=xyz&redirect_uri=http://<tomcat>:8080/myapp/rest/listener

IS 要求用户登录并向我的应用程序生成以下请求:

http://<wso2is>:8080/myapp/rest/listener?state=xyz&code=<xxx>

在此步骤中,当用户登录我的应用程序时,会要求提供用户信息:

https://<wso2is>:9443/oauth2/token?grant_type=authorization_code&code=<xxx>&redirect_uri=http://<wso2is>:8080/myapp/rest/listener&client_id=<xxx>&client_secret=<xxx>

这里我得到了 HTTP 415 响应代码。这是一个格式错误,在某些地方我读到我应该更改请求的内容类型。我尝试过 json 和 xml 但没有成功。

我已经让同一个应用程序与另一个应该是标准的 IdM(Fiware KeyRock Idm)一起使用。有人知道我做错了什么吗?

--更新--

我发现在代码中添加以下内容:

huc.setRequestProperty("Content-Type", "application/octet-stream"); 

在 IS 系统日志中给出不同的错误:

No operation matching request path "/oauth2/token" is found

但是APP端还是同样的错误。

最佳答案

最后我改变了做事的方式。我没有使用手动编码 HTTP 客户端,而是使用 Apache OLTU。这种方式更容易并且有效。

关于java - wso2 身份服务器 oauth2 请求返回 HTTP 错误 415,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155668/

相关文章:

java - 断言列表时 assertEquals 究竟检查什么?

java - 如何解决Java堆空间错误

javascript - 如何使用AJAX获取oAuth参数?

java - Spring oauth2 授权提供者

language-agnostic - 在 OAuth2.0 中使用 Facebook 访问 token 作为资源所有者凭据

youtube - 如何在没有用户操作的情况下从 YouTube Analytics API 检索数据?

java - ORM 如何在幕后工作?另外,在 Java 中拥有持久对象的最佳方式是什么?

java - 可扩展后端中的服务器发送事件

ios - 如何在IOS中实现安全的应用程序间消息传递

android - 为什么我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?