【问题标题】:Using Kerberos for SSO on Webpages在网页上使用 Kerberos 进行 SSO
【发布时间】:2014-03-07 06:54:33
【问题描述】:

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

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

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

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

非常感谢您的帮助:)

亲切的问候, 乌兹

【问题讨论】:

    标签: php linux kerberos


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      相关资源
      最近更新 更多