【问题标题】:Transparent authentication with LDAP and Servlet使用 LDAP 和 Servlet 进行透明身份验证
【发布时间】:2013-01-24 15:34:26
【问题描述】:

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

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

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

我想用 Servlet 做同样的事情。如果它与 PHP 一起使用,我认为没有理由不会发生这种情况。但我找不到该怎么做。我用谷歌搜索但找不到任何东西。有没有人做过类似的事情,可以指点我吗?

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

【问题讨论】:

  • 谢谢各位!我发现了一个名为 spnegro 的组件,它使 getRemoteUser() 能够工作。

标签: java authentication tomcat servlets ldap


【解决方案1】:

您希望将 SSO 提供程序插入您的网络应用程序。有几种选择,您必须自己研究什么最适合您的环境。您可能需要调查以下所有启用 SSO 的安全框架:

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

【讨论】:

    【解决方案2】:

    您在 servlet 的 doGet 和 doPost 方法中拥有的 HttpServletRequest 对象相当于 PHP $_SERVER['REMOTE_USER'],它被称为 getRemoteUser()

    【讨论】:

      【解决方案3】:

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

      我不知道你为什么不能提示输入密码,除非你使用某种 SASL 插件来根据 LDAP 验证用户。

      $_SERVER['REMOTE_USER'] 暗示您正在使用“HTTP Authentication”标头,这将 (AFIK) 需要弹出的凭据。如果仅对 Windows 服务器使用 IE,这可能是透明的。

      an example of how to configure tomcat

      【讨论】:

      • 它也适用于 FireFox。不幸的是,因为我无权访问它,所以 IDK 如何配置 Apache 以使其工作,但是任何调用 $_SERVER['REMOTE_USER'] 的 PHP 代码都会收到他的 AD 登录信息。在极少数情况下,FireFox 会显示一个登录弹出窗口。
      • 如果您获得的是“浏览器”,它是来自服务器的基本身份验证请求。 en.wikipedia.org/wiki/Basic_access_authentication
      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 2014-06-21
      • 2014-06-26
      • 2015-10-03
      • 2014-03-08
      • 2014-08-09
      • 2011-07-23
      • 1970-01-01
      相关资源
      最近更新 更多