我的任务是借助SSO
和Python
在Kerberos
后端应用程序中创建Active Directory
(单点登录)授权。
换句话说,前端应用程序对后端应用程序的特定URL进行AJAX GET请求。该后端应用程序必须以JSON格式返回有关员工的信息。
到目前为止我所做的:
1)后端应用程序的SPN
名称是在Active Directory
中创建的。
2)已创建后端应用程序的krb5.keytab
文件。
3)位于远程Windows服务器上的Active Directory和Kerberos服务器。
4)后端应用程序将在Linux Docker容器中。
5)我将Kerberos客户端安装到Docker容器中。
6)Kerberos领域:SERVICE.LOCAL
。
7)KDC服务器的主机名:CS001, CS002, CS003
。
您是否曾经在Python中看到上述过程的任何实现?我将不胜感激。
答案 0 :(得分:1)
您可以通过以下两种方式处理此问题:
纯Python解决方案
如果您没有代理,或者只是想使用python处理它,建议您使用python-gssapi library。 Here's a code sample。还有其他Python绑定,但是根据我的阅读,这似乎是最完整的。
注意,如果以这种方式处理,则您的python服务器可能需要能够遵守keep-alive标头(即对多个请求重复使用相同的连接)。这并不是严格的SPENGO协议的一部分,但是大多数浏览器似乎都要求服务器实现它。
代理解决方案
如果您使用的是Apache,则可以使用一个mod_auth_kerb模块,该模块已被详细记录。还有一个mod_auth_gssapi提供了类似的功能。
对于nginx,有a similar module可用。
使用任何这些代理解决方案时,其想法都是该代理处理Kerberos身份验证,并为您的python应用设置 REMOTE_USER env变量。因此,您的python应用需要能够以经过身份验证的用户身份接受此变量。 Django 具有专门用于此目的的中间件-我不确定 Flask (我提到这两个框架是因为它们在您问题的标记中)。