gpt4 book ai didi

php - 在网页上使用 Kerberos 进行 SSO

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:58 26 4
gpt4 key购买 nike

我在使用 Kerberos 方面不是很熟练。但我想使用 Kerberos 实现单点登录。

我想达到的目的是,你只需要使用 Windows 7 登录,然后打开浏览器,不需要其他身份验证,例如对于内联网。这可能吗?

Kerberos 使用票据。第一步是获得票证授权票,不是吗? Windows Server 使用 Kerberos 进行身份验证。那么在Windows中登录后是否有ticket granting ticket呢?我可以用这个(如果有的话)来获得其他服务的服务票吗?

另一个问题是关于 apache 的:当我在 linux 服务器上使用 Kerberos 时,我需要一个名为 mod_auth_kerb 的模块,不是吗?如果它安装在我的 linux 服务器上,我可以使用 Kerberos 身份验证吗?如果linux服务器上有内网,怎么可能用kerberos认证。我应该在 PHP 代码中进行身份验证还是例如可以“学习”apache 以某种方式进行身份验证吗?

非常感谢您的帮助:)

亲切的问候,乌兹

最佳答案

是的,这一切都是可能的,而且一直在进行。当您登录域帐户时,Windows 会使用您的密码从域 Controller 获取 Kerberos 凭据(票证授予票证或 TGT),这反过来允许您获得其他服务的票证而无需重新输入密码。您可以使用 klist.exe 查看 TGT 和您拥有的特定服务的任何其他票证。 Web 浏览器使用 HTTP 协商交换向 Web 服务器发送票证,服务器可以使用它来识别您(可选的返回 token 也可以向客户端验证服务器)。该服务器必须是同一个 Kerberos 领域的成员,或者具有您的领域信任链的成员。

mod_auth_kerb 是 Apache 中用于 Kerberos 身份验证的最常用模块。您可以使用 HTTP/server-hostname 形式的 setspn.exe 将 Web 服务器的 Kerberos 主体添加到 AD 帐户。然后使用 Windows 上的 ktpass.exe 或 Unix 上的 ktutil 之类的程序(为此您需要 AD 帐户的密码)创建一个保存该委托(delegate)人 key 的文件,称为“keytab”。 mod_auth_kerb 配置指的是 key 表。 mod_auth_kerb 将环境变量 REMOTE_USER 设置为客户端的标识,您只需在您的应用程序中读取它(在本例中为 PHP 代码)。

您必须将 Web 浏览器配置为实际使用 HTTP 协商身份验证,具体细节因浏览器而异。

这只是以高层次的方式回答您的直接问题;当然,还涉及许多其他细节,因为您要处理整个基础架构和几个必须协调的部分:Kerberos、DNS 名称、主体名称、浏览器配置、Apache 等。

顺便说一句:英文单词是“authenticate”,而不是“authentificate”。

关于php - 在网页上使用 Kerberos 进行 SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22243558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com