gpt4 book ai didi

spring-boot - 使用 keycloak - JWT token 保护 Spring Boot 服务

转载 作者:行者123 更新时间:2023-12-01 22:16:22 25 4
gpt4 key购买 nike

因此,我正在使用 keycloak 来保护我的服务。客户端应用程序从 keycloak 服务器获取访问 token ,并使用它来保护对 Spring Boot 应用程序的访问。我已经使用 bearer-only 访问类型为我的 Spring Boot 应用程序配置了 keycloak 属性:

keycloak.realm = master
keycloak.realmKey = ...
keycloak.auth-server-url = http://localhost:8080/auth
keycloak.ssl-required = external
keycloak.resource = boot-app
keycloak.bearer-only = true
keycloak.cors = true

Spring Boot keycloak 启动器:

<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>

并配置KeycloakWebSecurityConfigurerAdapter:

@Configuration
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
public class KeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter
{
/**
* Registers the KeycloakAuthenticationProvider with the authentication manager.
*/
@Autowired
public void configureGlobal(final AuthenticationManagerBuilder auth) throws Exception
{
final KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
auth.authenticationProvider(keycloakAuthenticationProvider);
}

@Bean
public KeycloakConfigResolver keycloakConfigResolver()
{
return new KeycloakSpringBootConfigResolver();
}

/**
* Defines the session authentication strategy.
*/
@Bean
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy()
{
return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
}

@Override
protected void configure(final HttpSecurity http) throws Exception
{
super.configure(http);
http
.authorizeRequests()
.antMatchers(
"/v2/api-docs",
"/configuration/ui",
"/swagger-resources",
"/configuration/security",
"/swagger-ui.html",
"/webjars/**",
"/swagger-resources/configuration/ui",
"/swagge‌​r-ui.html",
"/swagger-resources/configuration/security").permitAll()
.antMatchers("/*").hasRole("user")
.anyRequest().authenticated();
}
}

现在,一切正常。我的问题是:不记名 token 是 JWT token ,您需要对其进行解码(并验证访问)的是公钥,即

keycloak.realmKey

为什么需要其他设置,特别是:

keycloak.auth-server-url

公钥不就是您所需要的一切吗?

提前致谢

最佳答案

确实对于 bearer-only 你可能想知道为什么需要 KC URL 但因为一些 KC 版本 realmKey 不再是强制性的,因为我们使用 key 轮换.这意味着您的应用程序将使用 auth-server-url 属性从 KC 服务器动态检索公钥。

关于spring-boot - 使用 keycloak - JWT token 保护 Spring Boot 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com