簡體   English   中英

如何在Python應用程序中與Kerberos建立連接?

[英]How to set up a connection with Kerberos in Python application?

我的任務是借助KerberosActive DirectoryPython后端應用程序中創建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種方法可以解決此問題:

  1. 直接在Python中處理
  2. 在apache或nginx等代理中處理它

純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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM