使用Windows凭据(通过Kerberos)的带有SSO的Spring应用程序



我有一个带有登录屏幕的spring应用程序,该屏幕对用户在Active directory上输入的凭据进行身份验证(使用LDAP)。但是,我想添加SSO功能,特别是用户在登录Windows时输入的Windows凭据。

我知道,由于AD使用Kerberos,它不会是这样的"硬";我已经找到了一个可能的解决方案,关于如何实现它,特别是这个指南,我想要实现的是在这部分的页面。

但老实说,我似乎无法理解如何实现它…

我有以下问题:

1)我应该为我实际需要的实现哪些部分/类,这意味着以下哪些类在现实中是需要的?(AuthProviderConfig, SpnegoConfig, KerberosRestTemplate, KerberosLdapContextSource)

2)如果我所有的用户都在Windows环境中,我真的需要缓存门票(kinit)或keytab吗?在这种情况下应用程序。也不需要使用Yml,对吗?

3) AD管理员需要做些什么来配置/启用Kerberos的SSO ?(对于登录屏幕适配器工作,我有域名,url, rootDn,服务用户,用户搜索基础,服务用户密码在我的应用程序属性)

基于这个线程,特别是在什么得分最高的答案显示,我只错过了步骤1和2(我想?)。

如果有人有更好的"指南"或者我可以遵循的技巧来实现这一点,我洗耳恭听。

无论如何,感谢您的时间,感谢您能给我的任何反馈。

我使用教程实现了类似的任务:

https://www.baeldung.com/spring-security-kerberos

  1. 您只需要修改WebSecurityConfig extends WebSecurityConfigurerAdapter -从本教程的第6.2点添加Spnego过滤器,并使用KerberosAuthenticationProvider添加bean。Spring有内置的kerberos机器,它们自己生成和解密spnego令牌。在这种情况下,您应该对所有路径进行身份验证,但在我的情况下,我第一次使用kerberos身份验证,后来我使用了在实现SSO之前实现的JWT令牌。
  2. 需要keytab文件和ServicePrincipalName。您可以与具有AD用户访问权限的用户通过kinit生成它。
  3. 我发现了这样的东西:https://learn.microsoft.com/en-us/azure/active-directory/app-proxy/application-proxy-configure-single-sign-on-with-kcd

最新更新