使用LDAP和Servlet进行透明身份验证

时间:2013-01-24 15:34:26

标签: java authentication tomcat servlets ldap

我们有Windows Active Directory,其中所有用户都已注册并用于在Windows中登录。

我们有一台Apache服务器,配置为使用LDAP对该Active Directory中的用户进行身份验证。它的设置使得在PHP中,我们所要做的就是调用$_SERVER['REMOTE_USER']。浏览器在Windows中验证用户登录并将此数据发送到Apache,后者与LDAP通信以验证身份验证。当LDAP进行身份验证时,该代码返回用户的登录名,否则返回null。

通过这种方式,我们可以安全轻松地对PHP内部的用户进行身份验证,并使用他们的AD登录来控制对我们软件的访问。另一个优点是我们不需要登录页面,甚至不需要处理变量中的密码:身份验证是透明地处理给用户的,并且它们会自动记录到我们的软件中,并且密码永远不会出现在我们的代码中。 / p>

我想用Servlet做同样的事情。如果它适用于PHP,我认为没有理由不这样做。但我找不到怎么做。我用Google搜索但找不到任何东西。有没有人做过这样的事情并且可以指出一个方向?

使用登录名和密码的标准身份验证在Java中运行。如果我有域名,登录名和密码,(在Servlet中将来自登录页面)我可以验证任何用户。

3 个答案:

答案 0 :(得分:3)

您要做的是将SSO提供商插入您的网络应用程序。有几种选择,您必须自己研究哪种方法最适合您的环境。您可能希望调查以下安全框架,这些框架都启用了SSO:

还有像CA SiteMinder这样的商业产品可以做同样的事情。

答案 1 :(得分:1)

servlet中的doGet和doPost方法中的HttpServletRequest对象具有PHP $_SERVER['REMOTE_USER']的等价物,称为getRemoteUser()

答案 2 :(得分:1)

您的帖子被标记为Tomcat。您可以在tomcat中添加“领域”来进行身份验证。

除非您使用某种SASL插件来验证用户是否针对LDAP,否则我不知道如何不提示输入密码。

$ _ SERVER ['REMOTE_USER']意味着您正在使用“HTTP身份验证”标头,这会使(AFIK)需要弹出凭据。如果只针对Windows服务器使用IE,这可能是透明的。

an example of how to configure tomcat