Spring Boot和Keycloak

问题描述 投票:2回答:1

我想帮助我的春季启动应用程序更安全。

我目前有一个RESTful API,没有实现安全性。另一个Spring启动应用程序通过HTTP请求(GET,POST,PUT ...)访问此API。

最近,我浏览了一个REDHAT教程,该教程演示了如何使用keycloak制作更安全的spring boot应用程序。

我想学习如何将这个安全组合(springsecurity-keycloak)用于具有桌面应用程序(也在java中)作为其客户端的springboot应用程序。任何建议都会派上用场。

塞尔索谢谢你

java spring-boot spring-security redhat keycloak
1个回答
0
投票

这里有2个选项:

1)使用Keycloak Adapter进行Spring启动。

2)或者只使用带有Keycloak的Springs OAuth2包(因为Keycloak只是另一个OAuth2服务器)。以下是使用Keycloak传递的JWT(基于共享密钥)的示例配置:

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class JwtSecurityConfig extends ResourceServerConfigurerAdapter{

    @Override
    public void configure(ResourceServerSecurityConfigurer config) {
        config.tokenServices( createTokenServices() );
        config.resourceId(the aud claim that you setup under Keycloak/realm/mappers);
    }

    @Bean
    public DefaultTokenServices createTokenServices() {
        DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
        defaultTokenServices.setTokenStore( createTokenStore() );
        return defaultTokenServices;
    }

    private TokenStore createTokenStore(){
        return createJwtTokenStore();
    }

    @Bean
    public TokenStore createJwtTokenStore() {               
        return new JwtTokenStore( createJwtAccessTokenConverter() );
    }

    @Bean
    public JwtAccessTokenConverter createJwtAccessTokenConverter() {
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        converter.setSigningKey(shared secret that is configured in keycloak client);
        return converter;
    }
} 
© www.soinside.com 2019 - 2024. All rights reserved.