Windows-Server-2008

針對 Active Directory 的 Tomcat SPNEGO 身份驗證不起作用

  • January 16, 2011

我正在嘗試使用帶有 tomcat的http://spnego.sourceforge.net組件對 AD 進行身份驗證。

我已經創建了我的 SPN 的“setspn.exe -A HTTP/servername SVCTomcat”和“setspn.exe -A HTTP/servername.fqdn.net SVCTomcat”

我已經創建了我的 krb5.conf 和 login.conf 文件並在 web.xml 中設置了過濾器,即。

<filter-name>SpnegoHttpFilter</filter-name>
<filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>
   <param-name>spnego.allow.unsecure.basic</param-name>
   <param-value>false</param-value>
   <param-name>spnego.login.client.module</param-name>
   <param-value>spnego-client</param-value>
   <param-name>spnego.krb5.conf</param-name>
   <param-value>krb5.conf</param-value>
   <param-name>spnego.login.conf</param-name>
   <param-value>login.conf</param-value>
   <param-name>spnego.preauth.username</param-name>
   <param-value>SVCTomcat</param-value>
   <param-name>spnego.preauth.password</param-name>
   <param-value>Pasword</param-value>
   <param-name>spnego.login.server.module</param-name>
   <param-value>spnego-server</param-value>
   <param-name>spnego.prompt.ntlm</param-name>
   <param-value>false</param-value>
   <param-name>spnego.logger.level</param-name>
   <param-value>2</param-value>

請注意,我已經從中刪除了無關的標籤,因此它不是實際的 XML。

當我轉到受此過濾器保護的頁面時,我會在 catalina 日誌文件中得到它。2010 年 3 月 25 日 12:41:26 org.apache.catalina.startup.Catalina 啟動資訊:伺服器在 4615 毫秒內啟動 2010 年 3 月 25 日 12:41:47 net.sourceforge.spnego.SpnegoHttpFilter doFilter FINE:principal=SYSTEM @TESTDOMAIN

在網站上的 hello_spnego.jsp 範例中,它只報告使用者 tomcat 的名稱以 (SYSTEM) 身份執行,而不是我正在連接的使用者。

似乎作者在他的調試頁面中途停止了,所以除了三次檢查我的配置之外,我沒有其他地方可以查看。

有任何想法嗎?

假設您正在使用與 Tomcat 在同一台機器上執行的 Web 瀏覽器來訪問 hello_spnego.jsp 頁面,這就是我想像的情況:

  1. 您沒有設置 SpnegoHttpFilter 配置參數“spnego.allow.localhost”。
  2. 雖然過濾器的參考指南 ( http://spnego.sourceforge.net/reference_docs.html ) 聲明此設置預設為 false,但仔細閱讀原始碼(SpnegoFilterConfig.java 第 80 行)表明此參數預設為 true。
  3. 當此參數設置為 true 時,SpnegoHttpFilter 將繞過身份驗證,而是將經過身份驗證的主體設置為執行 Tomcat 的使用者帳戶。這就是您得到“SYSTEM@TESTDOMAIN”結果的原因。

如果我最初的假設是正確的,請嘗試從遠端機器訪問 hello_spnego.jsp 頁面,它應該執行實際的身份驗證。(您可能需要為您的瀏覽器啟用 Kerberos 身份驗證。)

請注意,過濾器作者通過位於http://sourceforge.net/projects/spnego/forums/的 SourceForge 項目論壇積極回答問題

引用自:https://serverfault.com/questions/126190