对于积极开发中的软件,我们使用的是Spring Boot(具有Spring Security)和Keycloak适配器。
目标是:
@Public
注释的端点除外(请参见代码段)(有效)一切正常,但我在理解一些细节方面有些问题:
KeycloakWebSecurityConfigurerAdapter
启用CSRF
保护。我认为只有这样做,它才能注册自己的Matcher以允许来自Keycloak的请求JSESSIONID
cookie根据我的理解:
KeycloakWebSecurityConfigurerAdapter
为什么启用它)。这仅适用于BASIC Auth
部分吗?CSRF
保护-但我不希望会话首先出现,然后API不需要CSRF
保护,对吧?http.sessionManagement().disable()
调用后设置了super.configure(http)
,也设置了JSESSIONID
cookie(所以这是哪里来的?)>如代码片段所述,由于我们使用Keycloak的SessionAuthenticationStrategy
部分并且应用程序为Authorization
(因此管理这些资源记录),因此Service Account Manager
不会一次设置为null。
如果有人可以清除所有内容,那将很棒。预先感谢!
@KeycloakConfiguration
public class WebSecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter {
@Inject private RequestMappingHandlerMapping requestMappingHandlerMapping;
@Override
protected void configure(final HttpSecurity http) throws Exception {
super.configure(http);
http
.authorizeRequests()
.requestMatchers(new PublicHandlerMethodMatcher(requestMappingHandlerMapping))
.permitAll()
.anyRequest()
.authenticated();
}
// ~~~~~~~~~~ Keycloak ~~~~~~~~~~
@Override
@ConditionalOnMissingBean(HttpSessionManager.class)
@Bean protected HttpSessionManager httpSessionManager() {
return new HttpSessionManager();
}
/**
* {@link NullAuthenticatedSessionStrategy} is not used since we initiate logins
* from our application and this would not be possible with {@code bearer-only}
* clients (for which the null strategy is recommended).
*/
@Override
@Bean protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
}
/**
* HTTP session {@link ApplicationEvent} publisher needed for the
* {@link SessionRegistryImpl} of {@link #sessionAuthenticationStrategy()}
* to work properly.
*/
@Bean public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
@Override
@Bean public KeycloakAuthenticationProvider keycloakAuthenticationProvider() {
return super.keycloakAuthenticationProvider();
}
}
对于积极开发中的软件,我们正在使用Spring Boot(具有Spring Security)和Keycloak适配器。目标是:对除注释的那些端点以外的所有端点都要求有效的身份验证...
您可能会过多使用JWT令牌。以本文为例https://blog.logrocket.com/jwt-authentication-best-practices/。尤其要看一下文章末尾有关将JWT作为会话令牌的参考。