繁体   English   中英

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

[英]wso2 identity server oauth2 request returns HTTP error 415

我的wso2身份服务器有问题,可能是概念错误,但我不太了解自己在做什么错。

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

我正在遵循的过程是这样的:

我的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;
}

我的应用程序将以下http请求作为POST发送:

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响应代码。 这是格式错误,在某些地方我已经读到我被要求更改请求的Content-Type。 我已经尝试过json和xml,但是没有用。

我有同一个应用程序,该应用程序与另一个应该是标准的IdM(固件KeyRock Idm)一起使用。 有人知道我在做什么错吗?

-更新-

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

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

在IS系统日志中给出了另一个错误:

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

但是在APP端仍然存在相同的错误。

最后,我改变了这样做的方式。 我没有手动编写HTTP客户端,而是使用Apache OLTU。 这种方式要容易得多,并且可以正常工作。

该链接[1]将提供您要发送的必要请求格式。 根据您的问题,内容类型应为“ application / x-www-form-urlencoded”

[1] http://tools.ietf.org/html/rfc6749#section-4.1.3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM