我该如何在Spring Boot资源服务器中使用Keycloak授权服务?
我已经在Keycloak客户端中设置了仅限Bearer访问,可以使用其文档中的信息来保护资源路径。
但是当我的Bearer客户端设置为“启用授权”并且我设置了资源、策略和权限时,就不能进行保护。
根据Keycloak的文档,“如果你正在使用Keycloak OIDC适配器,则可以强制执行应用程序的授权决策。当你为你的Keycloak应用程序启用策略强制执行时,相应的适配器拦截所有请求到你的应用程序,并强制执行从服务器获取的授权决策。”
在application.properties文件中,我设置了: keycloak.policy-enforcer-config.enforcement-mode=enforcing
然后出现错误:
但是当尝试访问资源时,这会产生以下错误。
我已经在Keycloak客户端中设置了仅限Bearer访问,可以使用其文档中的信息来保护资源路径。
但是当我的Bearer客户端设置为“启用授权”并且我设置了资源、策略和权限时,就不能进行保护。
根据Keycloak的文档,“如果你正在使用Keycloak OIDC适配器,则可以强制执行应用程序的授权决策。当你为你的Keycloak应用程序启用策略强制执行时,相应的适配器拦截所有请求到你的应用程序,并强制执行从服务器获取的授权决策。”
在application.properties文件中,我设置了: keycloak.policy-enforcer-config.enforcement-mode=enforcing
然后出现错误:
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