在我的情况下,我有一个CustomAuthenticationProvider的OAuth2登录。
现在我有CustomAuthenticationProvider没有被调用的问题,我不知道为什么。
登录到目前为止没有问题
我为客户端注册设置的属性:
# CLIENT FOR AUTHORIZATION CODE GRANT #
spring.security.oauth2.client.registration.login-client.client-id=client-id
spring.security.oauth2.client.registration.login-client.client-secret=secret
spring.security.oauth2.client.registration.login-client.client-authentication-method=client_secret_basic
spring.security.oauth2.client.registration.login-client.scope=openid, profile, roles
spring.security.oauth2.client.registration.login-client.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.login-client.redirect-uri=redirect-uri
spring.security.oauth2.client.provider.login-client.issuer-uri=issuer-uri
我SecurityConfig :
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter
{
@Value("${keycloak.logout.uri}")
private String logoutUri;
@Autowired
private KeycloakAuthenticationProvider authProvider;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.authenticationProvider(authProvider);
}
@Override
protected void configure(final HttpSecurity http) throws Exception
{
// Required for zkoss-uploads
http.headers()
.frameOptions()
.disable();
// Required for zkoss-logins
http.csrf().disable();
// Authorization on request
http.authorizeRequests()
.antMatchers("/actuator/**")
.permitAll()
.anyRequest()
.authenticated();
// OAuth2 Client
http.oauth2Client();
// OAuth2 Login
http.oauth2Login();
// Logout handling
http.logout().logoutSuccessUrl(logoutUri);
}
}
和我的CustomAuthenticationProvider:
@Component
public class KeycloakAuthenticationProvider implements AuthenticationProvider
{
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException
{
System.out.println("authenticate");
return authentication;
}
@Override
public boolean supports(Class<?> authentication)
{
System.out.println("support");
return true;
}
}
注意:我的CustomAuthenticationProvider还没有逻辑,因为我想看看它是否首先被调用
编辑:
我的依赖关系:
<!-- Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-client</artifactId>
<version>5.6.1</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-jose</artifactId>
<version>5.6.1</version>
</dependency>