小编raj*_*atg的帖子

如何将 Keycloak 策略执行器与 Spring boot 应用程序一起使用

Keycloak 策略执行器无法与示例 Sprint 启动应用程序配合使用。

我正在使用 Keycloak 版本 6.0.1 并尝试集成示例 Sprint 启动应用程序(Sprint 启动版本 2.1.3)。我的目标是在 Keycloak 中设置策略和权限,并在示例 Spring boot 应用程序中使用 Keycloak 策略强制执行器,以便使用 Keycloak 中定义的适当权限自动执行所有授权决策,并且示例应用程序中不需要任何代码。

我的示例 spring boot 应用程序仅从内存列表中打印用户列表:

public class JPAUserResource {

    @Autowired
    private UserRepository userRepo;

    @GetMapping(path = "/jpausers")
    public List<JPAUser> retrieveAllUsers() {
        return userRepo.findAll();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 application.properties 文件具有以下内容:

server.port=38080
spring.jpa.show-sql=true
spring.h2.console.enabled=true
logging.level.org.springframework.security=DEBUG
logging.level.org.keycloak.adapters.authorization=DEBUG
#Keycloak Configuration
keycloak.auth-server-url=http://192.168.154.190:18180/auth
keycloak.realm=master
keycloak.resource=login-app
keycloak.principal-attribute=preferred_username
keycloak.credentials.secret=195925d6-b258-407d-a65d-f1fd12d7a876
keycloak.policy-enforcer-config.enforcement-mode=enforcing
keycloak.realm-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjyYRe6LxBxO9hVtr4ScsMCBp3aPE9qbJLptPIMQCZR6JhVhOxA1kxhRmVYHXR5pdwiQWU8MriRhAY1JGniG6GNS1+BL+JaUiaGxov4rpD2SIMdrs8YjjSoD3Z8wvsMAopzWG48i9T/ppNaqKTkDZHbHAXOYJn+lymQ4EqpQrJ1Uh+SUA8XcLvWUQ12ty9BieujudWhnAgQ4zxyJY3I8sZwjaRIxndzSlyPJo45lWzXkpqcl92eU/Max7LRM4WKqsUvu86DgqlXbJcz8T+GUeF30ONQDSLX9rwNIT4ZiCVMT7x6YfKXZW6jxC0UiXxZuT23xk8A9iCP4rC9xo1NfGTwIDAQAB
keycloak.policy-enforcer-config.paths[0].path=/jpausers
keycloak.policy-enforcer-config.paths[0].methods[0].method=GET
Run Code Online (Sandbox Code Playgroud)

我的Keycloak授权设置如下:

{
  "allowRemoteResourceManagement": true,
  "policyEnforcementMode": "ENFORCING",
  "resources": [
    {
      "name": "Default Resource",
      "type": "urn:login-app:resources:default",
      "ownerManagedAccess": false, …
Run Code Online (Sandbox Code Playgroud)

authorization spring-boot keycloak

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

authorization ×1

keycloak ×1

spring-boot ×1