Apache Intranet Web 应用程序(PHP、JS)的 Active Directory 通过身份验证

问题描述 投票:0回答:1

我构建了一些 Intranet Web 应用程序,它们使用 Apache 和 PHP 在 Docker 容器(Ubuntu 主机)上运行。

当前身份验证基于 Active Directory(不是 Azure、本地域控制器) 这是一个登录页面,您可以在其中插入您的 userPrincipalName 和密码。 我为此使用 PHP LDAP 模块和 ldap_bind 函数。

但是用户已经在客户端计算机上使用其 Windows(或 Active Directory)帐户登录。 所以我想知道我是否可以构建单点登录(或更准确地说是直通)身份验证。

对于 IIS 服务器来说,这非常简单......

我试图找到一些东西,但我想我没有使用正确的术语。

您会发现很多用于配置 Azure-AD 的内容,但正如我所说,我们不使用 Azure。 我尝试了“PHP AD Passthrough Authentication”、“PHP Kerberos”、“PHP NTLM”、“Webapplication Active Directory Passthrough”以及类似的 JS 内容。 (因为您已登录客户端计算机,所以您可能必须从客户端发送一些数据并在服务器端使用它) 但这并没有给我我需要的结果。

您似乎可以使用 ldap_sasl_bind 函数(带有参数“GSSAPI”),但我不知道我到底要做什么。

有人有这方面的经验可以帮助我吗?

我不介意登录页面是否有一个额外的按钮“使用 Windows 凭据登录”,这将触发直通身份验证。完全自动化固然很好,但如果我的用户无需输入“用户名”和密码即可登录,我会很高兴。

提前致谢

javascript php authentication active-directory single-sign-on
1个回答
0
投票

对于 Apache,您可以使用 mod_auth_gssapi 或更早的 mod_auth_kerbmod_auth_ntlm 等模块。如果您仍然支持它,NTLM 会更容易,就像我想说的在 IIS 上一样。您也有适用于 Windows 的 Apache 的类似模块。

请记住,某些 NTLM 或 CURB 机制仅要求您的网站在浏览器的“Intranet 受信任区域”中注册。这可能是您问题的一部分。

最后,由于您拥有 Windows AD 本地基础设施,您也许可以询问管理员是否计划使用 IAM 解决方案,然后您可以通过 OIDC/Oauth2 或 SAML 进行查询。为此,您可以查看超级简单的 PHP 库 Jumbojett PHP OpenID Connect

© www.soinside.com 2019 - 2024. All rights reserved.