首页 文章

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

提问于
浏览
1

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

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

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

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

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

3 回答

  • 1

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

    我不知道你怎么不能提示输入密码,除非你使用某种SASL插件来验证用户对LDAP .

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

    an example of how to configure tomcat

  • 3

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

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

  • 1

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

相关问题