配置 mod_auth_sspi 来查找远程用户

配置 mod_auth_sspi 来查找远程用户

我已经尝试了一段时间来启动并运行 mod_auth_sspi 来帮助运行 Drupal Intranet。

Drupal LD​​AP 模块和 Drupal SSO 说明https://drupal.org/node/1371478已被关注。

我正在运行 Uniform Server 8.12 - 运行 apache 2.2 和 php 5.3

mod_auth_sspi 安装在模块上,并在 httpd.conf 文件中引用。

LDAP 本身可以工作,因为某人可以通过访问 /user 使用其 Active Directory 中的公司登录详细信息登录其站点。Drupal 上的测试机制还会提取相关信息,例如电子邮件等。

但不幸的是我无法让它们自动进行身份验证。

httpd.conf 文件还包含:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
# Pass NTLM authentication to Apache
LoadModule sspi_auth_module modules/mod_auth_sspi.so
<IfModule !mod_auth_sspi.c>
 LoadModule sspi_auth_module modules/mod_auth_sspi.so
</IfModule>

然后 vhosts 文件包含

  NameVirtualHost intranet.example.co.uk
<VirtualHost intranet.example.co.uk>
 DocumentRoot "C:/UniServer2/www"
 ServerName Intranet
 <directory "C:/UniServer2/www">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order Allow,Deny
   Allow from all
 </directory>
 <Location /intranet/user/login/sso>
   AuthType SSPI
   AuthName "Intranet"
   SSPIAuth On
   SSPIAuthoritative On
   ### The domain used to authenticate with LDAP; this should match the domain
   ### configured in the LDAP integration configuration within Drupal
   SSPIDomain xxx.xxx.x.x
   SSPIOmitDomain On
   SSPIOfferBasic On
   Require valid-user
   #SSPIBasicPreferred On
   #SSPIofferSSPI off
 </Location>
</VirtualHost>

需要说明的是,intranet.example.co.uk 已被替换为公司名称 xxx.xxx.xx 是 Active Directory 的 IP。显然,我出于安全原因替换了这些位。

位置是 intranet/ 因为同一台服务器上还有另一个内部 Web 应用程序。

但是当我访问该网站时收到错误消息:

“您未通过服务器的身份验证。您可以使用以下凭据登录。”

这发生在 intranet.example.co.uk 和 intranet.example.co.uk/user/login/sso 上。

Drupal 记录了以下错误报告:

ldap_sso_user_login_sso.step1:实现:mod_auth_sspi,已启用:1,server_remote_user:,server_redirect_remote_user:,ssoRemoteUserStripDomainName:,seamlessLogin:1 ldap_sso_user_login_sso.implementation:username=,(realm=)未找到 $_SERVER['REMOTE_USER'] ldap_sso_user_login_sso.no_remote_user.seamlessLogin ldap_sso_user_login_sso.no_remote_user.drupal_goto user/login

因此,显然 Drupal 没有找到远程用户。此外,我在 cgi-bin 中运行了一个简单的 whoami.php 脚本。此脚本的代码如下:

<html>
<head>
  <title>whoami at <?php $_SERVER['SERVER_NAME']; ?> </title>
</head>
<body style='font-family:Verdana;font-size:-1'>
<?php

$cred = explode('\\',$_SERVER['REMOTE_USER']);
if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)");
list($domain, $user) = $cred;

echo "You appear to be user <B>$user</B><BR/>";
echo "logged into the Windows NT domain <B>$domain</B>";

?>
</body>
</html>

这产生了“您似乎是用户”而没有后续文本并且“登录到 Windows NT 域(没有域信息 - 也许 SSPIOmitDomain 已打开)”,表明服务器也没有接收远程用户。

我没有对服务器进行任何特定的奇怪改动,因此我假设我遇到的问题一定是其他使用 mod_auth_sspi 的人遇到的问题。

虽然我的知识还不足以说明一切,但可能有几件事?

  • 我的服务器上没有 Tomcat。在 Apache wiki (http://wiki.apache.org/httpd/ModAuthSSPI) 它说 mod_auth_sspi 的一个常见问题是 mod.jk 配置不正确。Mod.jk 似乎是一个与 Tomcat 相关的文件 - 但是我还没有看到 Tomcat 被列为 mod_auth_sspi 的要求?

  • 与 htaccess 有关?我见过有人提到 mod_auth_sspi 和 htaccess,但没有具体说明。然而,htaccess 是唯一一个我对服务器做了一些不太寻常的事情的地方,因为它已配置为仅允许与组织具有相同 IP 地址的人访问该网站(换句话说,只有办公室里的人可以使用它,不能从外部访问它)。

我似乎在兜圈子,所以如果能提供任何建议或步骤来调试这个问题,我将不胜感激。

谢谢。

相关内容