我想帮助我的春季启动应用程序更安全。
我目前有一个RESTful API,没有实现安全性。 另一个Spring启动应用程序通过HTTP请求(GET,POST,PUT ...)访问此API。
最近,我浏览了REDHAT教程,演示了如何使用keycloak制作更安全的spring boot应用程序。
我想学习如何将这个安全组合(springsecurity-keycloak)用于具有桌面应用程序(也在java中)作为其客户端的springboot应用程序。任何建议都会派上用场。
谢谢你, 塞尔索
答案 0 :(得分: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;
}
}