集成 Windows 身份验证 spring 安全性

Posted

技术标签:

【中文标题】集成 Windows 身份验证 spring 安全性【英文标题】:Integrate Windows Authentication spring security 【发布时间】:2017-06-18 00:27:19 【问题描述】: 根据需要在 windows 环境中成功尝试 waffle 工作,但我的应用程序服务器托管在 *nix 环境中。

所以华夫饼解决方案不符合我的要求。

与 Waffle 无法满足我的要求相比,尝试过的 kerberos 解决方案很难配置。

我的要求 - 当用户点击我的 Web 应用程序的 URL 时,他/她将通过 windows 身份验证进行身份验证,或者如果可能的话可以获得 远程用户 或客户端名称(windows 帐户名称)来自请求对象。

任何建议都会有所帮助。

【问题讨论】:

恕我直言,您需要一个 LDAP/Active Directory integration @LaurIvan: LDAP 身份验证已经实现,但目前我需要的是实现 windows 身份验证,无需输入用户名/密码即可登录应用程序,当前 windows 登录用户名。 【参考方案1】:

如果您只有一个普通的 AD(没有 ADFS),那么唯一的选择是使用 SPNEGO (spring-security-kerberos) 为您的应用程序获取“自动登录”(SSO)。 UserPrincipalName 将在 Kerberos 令牌中提供。生成密钥表文件(用于您的应用程序/服务)时,请务必使用“/crypto all”并注意 KeyVersionNumber(因为“ktpass”会更新/增加 AD 中的密钥版本)。但是,客户端必须能够为您的应用获取服务票证(即 Windows 客户端必须是域的一部分)。另请注意,当客户端无法获得 Kerberos 服务票证时,IE 可能会退回到呈现 NTLM 令牌。 AD 和浏览器配置/行为比服务器端更具挑战性。

【讨论】:

我通过引用此 URL incepttechnologies.blogspot.in/p/weblogic.html 使用 ADFS 完成配置 身份验证成功,但从主体名称获取匿名用户。 您为身份验证提供程序配置了哪个UserDetailsService 导入 org.springframework.security.core.userdetails.UserDetailsS​​ervice; 介意我问如何获得它:“UserPrincipalName 将在 Kerberos 令牌中提供。”? 您可能会发现以下主题很有趣...***.com/questions/4508555/…【参考方案2】:

使用参考链接实现所需

    http://kb.kaminskiengineering.com/node/89 NTLM Authentication in a Web Application (java) 其他想要获得更高安全性的人也可以使用 kerberos-spengo,因为 spring security 不再支持我使用的上述方法。

【讨论】:

以上是关于集成 Windows 身份验证 spring 安全性的主要内容,如果未能解决你的问题,请参考以下文章

集成 Spring Security:身份验证自定义 UserDetailsS​​ervice

使用集成 Windows 身份验证接收登录提示

如何使用 Windows 集成身份验证强制显示登录窗口

Spring Security 3 身份验证与 Hibernate 3(JPA) 注释的集成

使用 EntityManager 进行 Spring Boot 和安全集成测试

SQL Server Windows 身份验证安全