[英]Tomcat 6 with SPNEGO SSO still prompts for login and password
我正在嘗試使用SPNEGO過濾器為Tomcat(6)設置Windows Active Directory SSO。
我已按照示例中的步驟進行設置,但是當我嘗試訪問hello_spnego.jsp時,仍然提示我輸入登錄名和密碼。
我可能丟失了一些東西,所以這是我的conf:
web.xml(與spnego相關):
<filter>
<filter-name>SpnegoHttpFilter</filter-name>
<filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>
<init-param>
<param-name>spnego.allow.basic</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.localhost</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.unsecure.basic</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>spnego.login.client.module</param-name>
<param-value>spnego-client</param-value>
</init-param>
<init-param>
<param-name>spnego.login.server.module</param-name>
<param-value>spnego-server</param-value>
</init-param>
<init-param>
<param-name>spnego.krb5.conf</param-name>
<param-value>${catalina.home}\conf\krb5.conf</param-value>
</init-param>
<init-param>
<param-name>spnego.login.conf</param-name>
<param-value>${catalina.home}\conf\login.conf</param-value>
</init-param>
<init-param>
<param-name>spnego.preauth.username</param-name>
<param-value>aqw</param-value>
</init-param>
<init-param>
<param-name>spnego.preauth.password</param-name>
<param-value>pass</param-value>
</init-param>
<init-param>
<param-name>spnego.prompt.ntlm</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>spnego.logger.level</param-name>
<param-value>1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpnegoHttpFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
krb5.conf:
[libdefaults]
default_realm = TEST.LOCAL
default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
forwardable=true
[realms]
TEST.LOCAL = {
kdc = SERVER_WITH_AD:88
default_realm = TEST.LOCAL
}
[domain_realm]
dev.local = TEST.LOCAL
.dev.local = TEST.LOCAL
login.conf:
spnego-client {
com.sun.security.auth.module.Krb5LoginModule required;
};
spnego-server {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
isInitiator=false
useKeyTab=true
keyTab="C:\Osys\QuartisTools\Tomcat\conf\aqw.keytab"
;
};
編輯:這是我所做的:
我使用以下命令設置他的SPN:
setspn -A HTTP / SERVER_WITH_AD.Test.local aqw
我使用以下命令為他創建了一個密鑰表文件:
ktpass / out c:\\ aqw.keytab / mapuser aqw@Test.local / princ HTTP/TOMCAT_SERVER@Test.local / pass * / kvno 0
我將密鑰表文件傳輸到Tomcat / conf。
附加信息:
-SERVER_WITH_AD運行Windows Server 2012(x64)。
-TOMCAT_SERVER運行Windows 7 Ultimate(x64)。
編輯2:正如Whome所建議的,我將地址添加到了受信任站點的列表中。
在某個時候,我不再看到用戶名/登錄提示,但是現在我在Tomcat中出現錯誤(顯示為HTTP 500錯誤):
KrbException:無效參數(400)-找不到合適類型的密鑰來解密AP REP-具有HMAC SHA1-96的AES256 CTS模式
因此,它可能找不到我的密鑰表。
在出現“找不到密鑰”錯誤之后,我已經重讀了conf文件,並根據Whome的建議將文件名設置為Unix風格。 然后,我將它們移動到conf文件旁邊,以使其具有最短的路徑。 我還添加了一個主體, 如此處所述的服務器密鑰表測試過程: ,因此我的login.conf為:
spnego-client {
com.sun.security.auth.module.Krb5LoginModule required;
};
spnego-server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="appserver.keytab"
principal=aqw
storeKey=true;
};
這給了我一個校驗和錯誤,所以我重新生成了我的密鑰表文件。
這又顯示了另一個錯誤:
javax.security.auth.login.LoginException:沒有可用於從用戶那里獲取身份驗證信息的CallbackHandler
因此,我編輯了web.xml以允許使用不安全的基本NTLM提示符和本地主機。 像這樣:
<init-param>
<param-name>spnego.prompt.ntlm</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.basic</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.localhost</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.unsecure.basic</param-name>
<param-value>true</param-value>
</init-param>
奇怪的是,它顯示了另一個例外:
javax.security.auth.login.LoginException:沒有可用於從用戶那里獲取身份驗證信息的CallbackHandler
我之所以說是奇怪的,是因為我的理解是,通過允許NTLM提示,我正在授權另一種進行身份驗證的方法。
最奇怪的部分是今天早上,它起作用了。 我不知道為什么 重新啟動服務器后它仍然可以工作。 我得到了“你好用戶!” 與正確的用戶的消息。 但是,HelloKeytab測試類無法正常工作。
編輯:最后,它停止工作並且無法正常工作。 我一直收到校驗和錯誤。 所以我最終使用了Waffle 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.