我已经尝试了一段时间来启动mod_auth_sspi来运行Drupal内联网。
遵循Drupal LDAP模块和Drupal SSO说明https://drupal.org/node/1371478 。
我正在运行一个统一的服务器8.12 – 运行Apache 2.2和PHP 5.3
mod_auth_sspi安装在模块上,并在httpd.conf文件中引用。
LDAP本身是有效的,因为去/某人可以使用他们的Active Directory中的公司login详细信息login到他们的站点。 Drupal上的testing机制也拉动了电子邮件等相关信息。
无论如何,我不能让他们自动进行身份validation。
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>
那么虚拟主机文件包含
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.xx SSPIOmitDomain On SSPIOfferBasic On Require valid-user #SSPIBasicPreferred On #SSPIofferSSPI off </Location> </VirtualHost>
有关信息intranet.example.co.uk已被replace为公司名称xxx.xxx.xx是Active Directory的IP。 显然,我出于安全原因已经replace了这些位。
位置是Intranet /,因为在同一台服务器上还有另一个内部Web应用程序。
但是,当我去的网站,我收到错误消息:
“您没有通过服务器的身份validation,您可以使用下面的凭据login。”
这发生在intranet.example.co.uk和intranet.example.co.uk/user/login/sso
以下错误报告由Drupallogging:
ldap_sso_user_login_sso.step1:implementation:mod_auth_sspi,enabled:1,server_remote_user:,server_redirect_remote_user:,ssoRemoteUserStripDomainName:,seamlessLogin:1 ldap_sso_user_login_sso.implementation:username =,(realm =)find$ _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显然没有find远程用户。 此外,我有一个简单的whoami.php脚本在cgi-bin中运行。 这个代码是:
<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>
这产生了“你似乎是用户”没有以下文本和“login到Windows NT域(没有域信息 – 也许SSPIOmitDomain在)”,这表明服务器也没有拿起远程用户。
我还没有对服务器进行任何奇怪的改动,所以我假设我遇到的问题必须是其他人使用mod_auth_sspi所遭受的问题。
虽然我的知识还不足以说明,但还是有一些事情可以做。
我没有在服务器上的Tomcat。 在Apache维基( http://wiki.apache.org/httpd/ModAuthSSPI )上说mod_auth_sspi的常见问题是mod.jkconfiguration不正确。 Mod.jk似乎是一个与Tomcat相关的文件 – 但是我还没有看到Tomcat在任何地方被列为mod_auth_sspi的需求?
与htaccess有什么关系? 我见过一些提到的mod_auth_sspi和htaccess,但没有具体的。 然而,htaccess是唯一的地方,我已经做了一些与服务器不同寻常的事情,因为它已被configuration为只允许与组织相同的IP地址的人访问该网站(换句话说,只有办公室的人可以使用它,而且不能从外面访问)。
任何意见或步骤,可以采取debugging这将不胜感激,因为我似乎围绕在圈子里。
谢谢。