我正在尝试测试Keycloak REST API.Instaled版本2.1.0.Final.我可以通过浏览器使用SSL访问管理员而不会出现问题.
我正在使用上面的代码:
Keycloak keycloakClient = KeycloakBuilder.builder()
.serverUrl("https://keycloak.intra.rps.com.br/auth")
.realm("testrealm")
.username("development")
.password("development")
.clientId("admin-cli")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
.build();
List<RealmRepresentation> rr = keycloakClient.realms().findAll();
Run Code Online (Sandbox Code Playgroud)
得到了错误:
javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse
javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:141)
at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:60)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
at com.sun.proxy.$Proxy20.grantToken(Unknown Source)
at org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:85)
at org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:65)
at org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:60)
at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:413)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:102)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
at com.sun.proxy.$Proxy22.findAll(Unknown Source)
at br.com.rps.itsm.sd.SgpKeycloakClient.doGet(SgpKeycloakClient.java:71) …Run Code Online (Sandbox Code Playgroud) 我在端口8082上使用Node.js,在端口80上使用Apache.
一切正常,并且浏览器开始显示错误消息"400 Bad Request",CORS错误.
服务器正在设置CORS标头.如您所见,我也在使用Redis适配器.
var io = require('socket.io').listen(8082);
io.adapter(redis({ host: '127.0.0.1', port: 6379 }));
io.set('origins', 'domain.com:*');
Run Code Online (Sandbox Code Playgroud)
不能说为什么有些时候一切正常,有些时候没有.当Socket.io尝试从pooling升级到websocket时,总会发生错误.
当我使用来自https://cdn.socket.io/socket.io-1.0.6.js的客户端时,我得到的错误更少.
当我使用socket.io-1.0.6.js的本地引用时,错误会以更高的频率发生.找不到错误模式.
在错误之后,我重新启动Node.js服务器,尝试一些请求,一次又一次地工作,错误.有时无需重新启动服务器即可再次运行.
请求标头示例
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
Cookie io=RjKzZ6Y1OTQeSEsPAAAL; SGM_DESENV=cb5ae798c2f6f5d3f38c6ed16a6e4696
Host 200.238.251.79:8082
Origin http://200.238.251.79
Referer http://200.238.251.79/maximiliano/sgp/admin/custodiacompartilhada/add
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0
Run Code Online (Sandbox Code Playgroud)
响应标头示例
Access-Control-Allow-Credentials true
Access-Control-Allow-Origin http://200.238.251.79
Connection keep-alive
Content-Length 101
Content-Type application/octet-stream
Date Fri, 25 Jul 2014 16:10:26 GMT
Set-Cookie io=9OYcCmU24IyzrAS3AAAM
Run Code Online (Sandbox Code Playgroud)
错误消息
NetworkError: 400 Bad Request - http://200.238.251.79:8082/socket.io/?EIO=2&transport=polling&t=1406304539856-2&sid=RjKzZ6Y1OTQeSEsPAAAL
Cross-Origin Request Blocked: The Same …Run Code Online (Sandbox Code Playgroud) 是否可以通过 REST API 检查用户是否有活动/有效的会话?
我正在使用 Java REST 管理客户端。我看到返回的 UserSessionRepresentation
List<UserSessionRepresentation> usr = Keycloak.realm("realmId").users().get("userId").getUserSessions();
Run Code Online (Sandbox Code Playgroud)
但 UserSessionRepresentation 没有我想要的信息。这是可能的?