[英]How to set up a connection with Kerberos in Python application?
我的任務是借助Kerberos
和Active Directory
在Python
后端應用程序中創建SSO
(單點登錄)授權。
換句話說,前端應用程序對后端應用程序的特定URL進行AJAX GET請求。 該后端應用程序必須以JSON格式返回有關員工的信息。
到目前為止,我所做的是:
1)在Active Directory
中創建了后端應用程序的SPN
名稱。
2)創建了后端應用程序的krb5.keytab
文件。
3)位於遠程Windows服務器上的Active Directory和Kerberos服務器。
4)后端應用程序將在Linux Docker容器中。
5)我安裝Kerberos客戶端到Docker容器。
6)Kerberos領域: SERVICE.LOCAL
。
7)KDC服務器的主機名: CS001, CS002, CS003
。
您是否曾經在Python中看到上述過程的任何實現? 我將不勝感激。
您有2種方法可以解決此問題:
純Python解決方案
如果您沒有代理,或者只想在python中處理它,建議您使用python-gssapi庫 。 這是一個代碼示例 。 還有其他Python綁定,但是根據我的閱讀,這似乎是最完整的。
注意,如果以這種方式處理,則您的python服務器可能需要能夠遵守keep-alive標頭(即,對多個請求重復使用相同的連接)。 這並不是嚴格的SPENGO協議的一部分,但是大多數瀏覽器似乎都要求服務器實現它。
代理解決方案
如果您使用的是Apache,則可以使用一個有詳細說明的mod_auth_kerb模塊。 還有一個mod_auth_gssapi提供類似的功能。
對於nginx,有一個類似的模塊可用。
使用任何這些代理解決方案時,其想法是該代理處理Kerberos身份驗證,並為python應用設置REMOTE_USER env變量。 因此,您的python應用需要能夠以經過身份驗證的用戶身份接受此變量。 Django有專門用於此目的的中間件-我不確定Flask (我提到這兩個框架是因為它們在您問題的標記中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.