我的wso2身份服务器有问题可能是一个概念错误,但我真的不明白我做错了什么。
我有一个JAVA REST应用程序需要使用oauth2标识服务器验证用户。我在debian框上安装了wso2 Identity Server 5.0.0。我创建了最终用户并创建了服务提供者以获取clientid和客户端密钥。
我遵循的流程是:
我的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响应代码。这是一个格式错误,在某些地方我已经阅读过,我可以更改请求的Content-Type。我试过json和xml但没有用。
我有同样的应用程序使用另一个本应是标准的IdM(Fiware KeyRock Idm)。有谁知道我做错了什么?
- 更新 -
我发现在代码中添加以下内容:
huc.setRequestProperty("Content-Type", "application/octet-stream");
在IS系统日志中出现不同的错误:
No operation matching request path "/oauth2/token" is found
但APP方面的错误仍然相同。
答案 0 :(得分:1)
最后,我改变了这样做的方式。我没有手动编写HTTP客户端,而是使用了Apache OLTU。这种方式更容易,而且有效。
答案 1 :(得分:1)
此链接[1]将提供您要发送的必要请求格式。根据你的问题,内容类型应该是&#34; application / x-www-form-urlencoded&#34;