java - 基于自定义属性的 Spring Boot SOAP Web 服务的 Keycloak 身份验证

标签 java spring spring-boot keycloak

我们使用 Keycloak 来保护 Spring Boot SOAP 应用程序。我们希望根据 keycloak 中用户属性的信息来处理对应用程序的授权,而不是标准的“基于角色”访问。

例如,我们可以使用标准的 keycloak spring boot 适配器,配置如下:

keycloak.security-constraints[0].authRoles[0]=special-role
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/service/*

这将确保只有具有“特殊角色”的用户才能访问该服务。但是是否可以编写自定义过滤器来查看用户属性的值而不是角色的值?

最佳答案

我们找到的解决方案是使用 Keycloak 的 Spring Security 适配器,然后指定我们自己的 bean 来检查 token :

@Component
public class WebSecurity {
    public boolean check(Authentication authentication) throws Exception {
        boolean result = false;
        ...
        return result;
    }
}

// In the web security configuration
        http
                .authorizeRequests()
                .antMatchers(HttpMethod.POST, SOME_URL)
                .access("@webSecurity.check(authentication)")

关于java - 基于自定义属性的 Spring Boot SOAP Web 服务的 Keycloak 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598156/

相关文章:

java - 如何使用 Spring Boot 在 Java 中测试 Dropbox 上传?

java - 我在 intellij 上运行 Spring Boot 应用程序时遇到错误。有人能帮我吗?

java - 以生产者/消费者模式暂停消费者

java - 如何捕获 Marathon 中的弹出对话框?

java - 如何在 Spring Boot 中添加 UrlRewriteFilter

java - Spring Data 和 JPA 中的递归关系?

postgresql - HikariPool-1 - 无法验证连接 org.postgresql.jdbc.PgConnection@2a84e649(此连接已关闭。)

java - 如何拦截Hibernate生成的SQL?

spring-boot:如果密码失败,则在没有数据库的情况下启动应用程序

java - 属性占位符中的冒号