1

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

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

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

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

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

4

3 回答 3

3

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

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

于 2013-01-24T15:41:21.760 回答
1

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

于 2013-01-24T15:44:38.723 回答
1

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

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

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

一个如何配置tomcat的例子

于 2013-01-25T10:28:03.557 回答