编辑:解决了!请参阅下面的答案。
您好,我正在寻找一种以以下方式进行单点登录到内部网的方法:
- Linux 用户通过图形前端(例如 GNOME)登录。
- 他自动向 MIT Kerberos KDC 请求其用户名的 TGT。
- 通过某种方式,Apache 服务器(我们假设它与 KDC 位于同一台服务器上)会获知该用户已登录。
- 当用户访问内联网时,他会自动被授予访问其 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
< /目录 >
然后,我将 Mozilla Firefox 配置为信任我的内部网站(www.eindwerk.lan)[图像]:
网络.协商-身份验证.委托-uris : eindwerk.lan
网络.协商-身份验证.受信任的uris: eindwerk.lan
kinit
在终端上执行。[图像]浏览内部网站:您现在已自动登录!
这是如何运作的?
- Mozilla Firefox 执行常规 HTTP/GET 请求。
- Apache 回复 HTTP/401 需要授权。
- Mozilla Firefox 使用我们刚刚获得的 Kerberos 令牌进行回复
kinit
。[Wireshark 捕获的图像] - 发生 Kerberos 身份验证,Apache 使用 HTTP/200 OK 回复。
在终端中执行
klist
。您应该会看到网络服务器的票证![图像]kdestroy
在终端上执行。[图像]硬刷新(CTRL+F5)内部站点。现在您将看到登录提示![图像]