嗬嗬!
我在我的项目中使用带有 Kerberos 的 Spring Security 5 进行 SSO 身份验证。
在WebSecurityConfig
我注册两个AuthenticationProvider
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(msfUserDetailsService).passwordEncoder(passwordEncoder());
assertThatUnlimitedCryptographyEnabled();
// Two providers
auth.authenticationProvider(kerberosAuthenticationProvider());
auth.authenticationProvider(kerberosServiceAuthenticationProvider());
}
如以下两个示例所示,这似乎是其完成方式:
- https://docs.spring.io/spring-security-kerberos/docs/current/reference/html/ssk-spnego.html
- https://www.ebayinc.com/stories/blogs/tech/customizing-spring-security-with-multiple-authentications/
但是我不明白为什么我需要它们。在身份验证期间KerberosServiceAuthenticationProvider
,这是验证 Kerberos 票证的那个(请参阅JavaDoc)
然而,这是KerberosAuthenticationProvider
为了什么?在这种情况下,JavaDoc只是说
用于 kerberos 的 AuthenticationProvider。