在企业环境中使用 Kerberos 验证 Django 应用程序

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

我正在尝试使用 Kerberos 和 LDAP3 在公司网络内验证我的 Django 应用程序。当我登录到我的公司计算机时,我希望我的应用程序能够登录而无需再次输入用户名和密码。我发现可以使用 Kerberos 来完成此操作,但找不到与此相关的综合文档。我现在正在使用 ldap3 身份验证,用户必须输入用户名和密码,但我想跳过输入用户名和密码的过程。我怎样才能做到这一点?

django authentication single-sign-on kerberos ldap3
1个回答
0
投票

HTTP 上的 Kerberos 使用 SPNEGO(GSSAPI 的一部分)。实现方法有很多种:

  • 使用 Web 服务器(例如 Apache 有 mod_auth_gssapi,IIS 有“集成 Windows 身份验证”);
  • 使用 WSGI/ASGI 中间件(例如 wsgi-kerberos 或 asgi-gssapi);
  • 在 Django 中(例如,我在 GitHub 上找到了 django_gss_spnego,看起来它应该可以工作)。

在所有情况下,应用程序都需要具有

HTTP/appdomain.example.com
的 Kerberos 凭据 – 对于 Windows AD,这意味着为应用程序创建一个“服务”用户帐户,为其分配“HTTP/...”SPN,并(通常)导出密钥表对于帐户。

严格来说,LDAP 根本不参与 Kerberos 身份验证过程。您只需要 LDAP 即可在身份验证完成后查找其他用户详细信息。 (SPNEGO 为您提供一个 Kerberos 主体名称,您可以通过 LDAP 在 AD 中将其查找为 sAMAccountName – not userPrincipalName。)

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