如何使用Spring和Active Directory实施单一登录

问题描述 投票:18回答:2

我有一个基于Spring的Web应用程序,我想在其上实现单一登录解决方案。

基本流程为:

1)用户登录Windows Workstation /台式PC(通过组织的Active Directory进行身份验证)

2)用户打开浏览器并导航到Spring Web App。

3)Spring Web App 以某种方式确认用户已经针对AD进行了身份验证,并无缝地允许他们进入,即,无需挑战用户名和密码。实际上,Spring Web应用程序永远不会显示登录表单。

显然是我遇到了问题的步骤3。

我看过Spring Security,Kerberos,SPNEGO,但是我觉得自己很困惑。

如果有所作为,我将在Spring 3上的Jetty上使用Java 6,Jetty实例将在* Nix机器上运行。

java spring active-directory single-sign-on kerberos
2个回答
19
投票

我已经为我的客户实施了同一件事。我们在基于Spring的Web应用程序(充当服务提供者)中使用spring-saml,并在Identity Provider(IDP)中使用ADFS。

您可以从this link寻求帮助以进行配置。如果您遇到任何与实施或设置问题有关的问题,我将为您提供帮助。

基本上,您的网络应用将充当SP,而ADFS将被视为IDP。您需要交换两个元数据文件,它们只是通信证书。


0
投票

我对此有些困惑。用户登录到便携式计算机/个人计算机,并根据AD进行身份验证。现在,用户启动浏览器并导航到Web应用程序(SP)-Web应用程序会将用户重定向到ADFS(IdP)。但是,要使IdP声明用户已通过身份验证,它需要“某些东西”(令牌或Windows域用户名,...)。据我所知,浏览器没有发送ADFS的cookie。那么ADFS如何自动验证用户身份呢?如何“知道”用户是谁?

我将用户CAS作为SSO提供者-在这种情况下,假设我们为SSO配置了2个应用,则流程是这样的。用户第一次尝试访问Web应用程序时,Web应用程序会将用户重定向到SSO提供程序。 SSO提供程序向用户显示一个登录页面,并验证credentails。此后,SSO提供程序在浏览器中设置cookie,并将用户重定向到webapp。当访问另一个Web应用程序时,它也会将用户重定向到SSO提供程序-这次,浏览器将发送令牌,并且SSO提供程序“知道”这是经过身份验证的用户,不显示登录页面,而是重定向用户(带有令牌)返回到网络应用。关键是当我将CAS用作SSO提供程序时,会显示一次登录页面-对于对受保护的Web应用程序的所有后续请求,浏览器将在浏览器中发送SSO提供程序设置的令牌以识别用户

© www.soinside.com 2019 - 2024. All rights reserved.