我们有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中将来自登录页面)我可以验证任何用户。
答案 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,这可能是透明的。