2017-06-12 181 views
0

如何在Spring Boot资源服务器上使用Keycloak授权服务?在Spring Boot资源服务器上使用Keycloak授权服务(资源服务器)

我有一个keycloak中的客户端设置为仅承载方式,并且可以使用来自其文档的信息来保护资源路径。

但是当“授权启用”设置为true为我的承运人唯一的客户端,我已设置资源,策略,权限。

从Keycloak文档https://keycloak.gitbooks.io/documentation/authorization_services/topics/enforcer/keycloak-enforcement-filter.html “你可以,如果你使用的是Keycloak OIDC适配器执行授权决定你的应用程序。 当启用策略实施为您Keycloak应用程序,相应的适配器拦截到您的应用程序的所有请求,并强制执行从服务器获得授权决定。“

在application.properties我设置: keycloak.policy-实施者 - config.enforcement模式=执行

,并得到错误:

java.lang.NoClassDefFoundError: org.keycloak.authorization.client.ClientAuthenticator 

我加入依赖

<dependency> <!-- https://issues.jboss.org/browse/KEYCLOAK-3246 --> 
     <groupId>org.keycloak</groupId> 
     <artifactId>keycloak-authz-client</artifactId> 
     <version>3.1.0.Final</version> 
    </dependency> 

但是当尝试访问资源时,会出现如下错误:

Client 'resourceserver-springboot' doesn't have secret available 
org.keycloak.authorization.client.util.HttpResponseException: Unexpected response from server: 400/Bad Request 
+0

你为什么加入keycloak测试辅助依赖形成的?这与authz无关。无论如何,你可以看看https://github.com/keycloak/keycloak-quickstarts/tree/master/app-authz-springboot –

+0

对不起在我的问题不是keycloak-test-helper错误,而是keycloak-authz-client我会更新问题。 – Melissa

+0

嗨塞巴斯蒂安,它看起来像演示是为Keycloak版本3.2.0.CR1-SNAPSHOT。我正在使用版本3.1.0.Final。我是否可以在3.1.0.Final上运行它,还是需要等待新版本的更改? – Melissa

回答

0

看起来你忘了传之秘在你的配置: keycloak.credentials.secret=my_secret

+0

我是的,但即使添加它,我仍然得到'org.keycloak.authorization.client.util.HttpResponseException:意外的响应从服务器:400 /错误的请求'的错误''我知道API作为测试在包括Keycloak授权服务之前。对于纯资源服务器来说,使用keycloak-authz-client似乎是错误的。我正忙于通过你寄给我的快速启动。乍一看,它似乎是一个客户端Web应用程序的示例,而不是资源服务器。 – Melissa

+0

资源服务器使用kc-authz-client并没有错。原因是RS应该能够访问一些API来管理资源。 另外,使用UMA时,还有一个用于获取许可权证的API。快速入门基本上都是客户端和RS。 –

+0

嗨塞巴斯蒂安,我已经快速入门3.1.0.Final。 但无法保护我添加到ApplicationController的JSON响应: '@RequestMapping(value =“/ protected/hello”,method = RequestMethod.GET) public Map hello(){ return Collections.singletonMap “消息”,“你好”); }' 并从pom.xml中删除了自由标记依存关系。 我还在keycloak中添加了一个资源(/ protected/hello/*),其权限和策略设置为/ protected/premium/* URL http:// localhost:8081/protected/hello/redirects登录到Keycloak jdoe/jdoe我收到404错误 – Melissa