使用 Apache 和 Linux MIT Kerberos 实现内联网单点登录

使用 Apache 和 Linux MIT Kerberos 实现内联网单点登录

编辑:解决了!请参阅下面的答案。

您好,我正在寻找一种以以下方式进行单点登录到内部网的方法:

  1. Linux 用户通过图形前端(例如 GNOME)登录。
  2. 他自动向 MIT Kerberos KDC 请求其用户名的 TGT。
  3. 通过某种方式,Apache 服务器(我们假设它与 KDC 位于同一台服务器上)会获知该用户已登录。
  4. 当用户访问内联网时,他会自动被授予访问其 Web 应用程序的权限。

我认为我在网上搜索时没有见过这种功能。我知道存在以下可能性:

  • 使用诸如 mod_auth_kerb 之类的身份验证模块,系统会向用户显示登录提示,要求用户输入用户名和密码,然后根据 MIT Kerberos 服务器进行身份验证。(我希望这是自动的。)
  • 当用户是 Active Directory 的一部分时,IIS 支持通过 ASP.Net 进行集成 Windows 登录。(我正在寻找 Linux / Apache 等效物。)

任何建议、批评和想法都非常感谢。这是一个展示概念验证的学校项目,因此每一条有用的信息都非常受欢迎。:)

答案1

我找到了!

我按照说明进行操作https://help.ubuntu.com/community/SingleSignOn(参见:“应用程序安装”)来配置 Apache 网络服务器。

这是我的 httpd.conf[图像]

服务器名称 www.eindwerk.lan

< 目录 /var/www/ > 选项索引 FollowSymLinks MultiViews

   AllowOverride None
   Order allow,deny
   allow from all

  AuthType Kerberos

KrbMethodNegotiate 上

KrbMethodK5Passwd 开启

  AuthName "Kerberos Login"
  KrbAuthRealm EINDWERK.LAN
  Krb5Keytab /etc/apache2/auth/apache2.keytab
  require valid-user

< /目录 >

  1. 然后,我将 Mozilla Firefox 配置为信任我的内部网站(www.eindwerk.lan)[图像]

    网络.协商-身份验证.委托-uris : eindwerk.lan

    网络.协商-身份验证.受信任的uris: eindwerk.lan

  2. kinit在终端上执行。[图像]

  3. 浏览内部网站:您现在已自动登录!

    这是如何运作的?

    • Mozilla Firefox 执行常规 HTTP/GET 请求。
    • Apache 回复 HTTP/401 需要授权。
    • Mozilla Firefox 使用我们刚刚获得的 Kerberos 令牌进行回复kinit[Wireshark 捕获的图像]
    • 发生 Kerberos 身份验证,Apache 使用 HTTP/200 OK 回复。
  4. 在终端中执行klist。您应该会看到网络服务器的票证![图像]

  5. kdestroy在终端上执行。[图像]

  6. 硬刷新(CTRL+F5)内部站点。现在您将看到登录提示![图像]

相关内容