2017-03-09 43 views
0

我們計劃在我們的Web應用程序上使用http://spnego.sourceforge.net/實施SSO。我已經嘗試了http://spnego.sourceforge.net/中的示例項目,並且它運行良好(helloKDC.java和hello_spnego.jsp)。使用SPNEGO Web自動登錄SSO

我的問題是,使用SPNEGO成功驗證用戶後,該用戶如何自動登錄到我們的Web應用程序?我知道,那request.getRemoteUser()返回客戶端的Windows用戶名,但客戶端的Windows密碼怎麼樣?如果我的理解是正確的,SPNEGO使用令牌而不是密碼?

注:這個問題有點類似於Java SSO using SPNEGO,但不幸的是,沒有接受的答案。

+0

爲什麼你需要密碼? SPNEGO認證就足夠了。 –

回答

0

您的理解是正確的,SPNEGO使用令牌而不是密碼。至於第一個問題,關於用戶如何自動登錄到Web應用程序,您必須創建一個Kerberos密鑰表,然後將其複製到您的應用程序服務器(並將其配置爲查看密鑰表),以便將SPNEGO令牌解密爲「告訴「用戶是誰。一旦配置了密鑰表,就會自動使用Kerberos SSO登錄到您的Web服務器。否則,令牌只會看起來像應用程序的加擾位,而SSO驗證會失敗。請注意,您將永遠無法看到密碼 - 沒有request.getPassword()。在SPNEGO/Kerberos中,密碼永遠不會暴露給任何人,也不會暴露給任何人,而不是暴露給應用服務器,甚至不暴露給Kerberos KDC本身,因此使用SPNEGO/Kerberos時無法以任何方式獲取密碼。這是Kerberos的美麗之一。有關其他參考資料,您可以閱讀我的技術文章,瞭解如何在此創建Kerberos密鑰表:Kerberos Keytabs – Explained

+1

謝謝。我意識到我不再需要密碼,因爲如果request.getRemoteUser()是!= null這意味着Spnego身份驗證成功,我只需要自動登錄用戶。 – stuckoverflow24