我正在编写一个使用Spring Security保护的应用程序。
我想实现2个目标:
1.应用程序在后台使用Keycloak作为认证服务器(这是在我的控制下)。
1.我希望用户能够通过应用程序中的默认登录表单登录,这样用户就不需要被转发到Keycloak的身份验证页面。
理想的解决方案是使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
启用的登录名为:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated()
)
.oauth2Login(withDefaults())
.formLogin(withDefaults());
return http.build();
}
我现在知道如何从Keycloak获取访问令牌,但不知道是否可以使用它在Spring Security中设置OAuth2上下文。我找不到任何如何使用AuthorizationGrantType password
执行此操作的示例。
1条答案
按热度按时间x6492ojm1#
你指的是"密码授予"流程和it has been deprecated。你不应该使用它(比如真的不应该)。
要对用户进行身份验证,请使用授权代码流(带有重定向到授权服务器的功能)。这样做有以下几个原因:
如果你关心的是外观和感觉,考虑定义一个Keycloak主题。这将允许你控制你的用户可以看到的所有Keycloak屏幕。