如何从 Active Directory 填充 Apache 服务器中的 REMOTE_USER(与 SSO 相关)

Posted

技术标签:

【中文标题】如何从 Active Directory 填充 Apache 服务器中的 REMOTE_USER(与 SSO 相关)【英文标题】:How to populate the REMOTE_USER in Apache Server from Active Directory (SSO related) 【发布时间】:2014-10-09 14:59:53 【问题描述】:

我正在使用 Joomla 3.3.3 为我们公司构建一个 Intranet 站点。

我已将 VM 配置为使用带有标准 LAMP 堆栈的 Ubuntu 14.04 运行。我还安装了 Joomla,我能够与我们公司的 Active Directory 一起工作(用户可以从我们网络上的任何机器登录到该站点,并且 Joomla 可以识别他们)。

我现在正在尝试实施 SSO,以便我们的员工在登录到他们的工作站时无需登录该站点,并且通过我的故障排除,我已将其范围缩小到“REMOTE_USER”变量而不是由 APACHE 服务器填充(该变量甚至没有出现在我的 phpinfo() 页面上)

我认为我在使用 Joomla 和 PHP 方面知识渊博,但我的 Apache 服务器和 Ubuntu 技能相当薄弱。

我的用户需要在 Apache 服务器中进行身份验证吗?我真的只需要 Windows 机器将 Remote_User 令牌传递给 Joomla,但我不知道如何在 Ubuntu 中执行此操作。

【问题讨论】:

httpd.apache.org/docs/2.2/howto/auth.html Internet Explorer 与 AD 集成得很好,原因很明显。因此,可能值得了解它是如何做到的——我怀疑它会检测到正在运行它的机器上的 Windows 用户,并通过注入的 HTTP 标头将某些内容传递给白名单网站集。 Is this article 有什么好处?我想你必须使用 IE,不确定其他浏览器会在这里做什么,因为它不是基于标准的行为。 halfer - 我的用户应该能够使用任何浏览器,而不仅仅是 IE。 @cmorrissey - 这似乎是一个好的开始,但 Apache 真的必须重新验证用户吗?对我来说关键是我的用户已经在他们的设备上进行了身份验证(主要是 Windows 机器,但也有一些 iPad),他们不应该再次进行身份验证。 Apache 有没有办法简单地获取 remote_user 并将该信息传递给我的应用程序而无需运行额外的身份验证? 我认为您的 apache mods 有问题,因此该参数没有被 apache 传递给 php。你能链接你的apache配置吗?谢谢 【参考方案1】:

第一步是通过组策略更改将您的 Joomla 站点添加到 Internet Explorer 中的 Intranet 安全组。 Google Chrome 和 Firefox 尊重 IE 安全组设置。

完成此操作后,每当您的用户从经过域验证的计算机上浏览您的网站时,浏览器将自动发送带有已验证用户名的用户标头,这可以在 PHP 中使用 $_SERVER['PHP_AUTH_USER'] 超全局访问。

【讨论】:

不适合我。不管怎么说,还是要谢谢你。我试过 PHP_AUTH_USER、REMOTE_USER、AUTH_USER... 等等。此外...您的解决方案没有说明 keytabs

以上是关于如何从 Active Directory 填充 Apache 服务器中的 REMOTE_USER(与 SSO 相关)的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将数据从 Oracle 表填充到 Active Directory?

如何填充 Azure Active Directory B2C 用户自定义用户属性?

链接到 SQL Server 的 Active Directory

如何从 Azure Active Directory 检索用户信息

给定 UserPrincipal 对象,如何从 Active Directory 中获取“公司”和“部门”?

LDAP:如何从 Active Directory 中获取所有用户和组