簡體   English   中英

Axis2用戶身份驗證

[英]Axis2 user authentication

由於使Web服務盡可能保持無狀態的雄心,我遇到了一個問題。 我最近開始使用Axis2,並試圖找到可行的身份驗證解決方案。 身份驗證是指用戶名/密碼。 我已經將SSL與WS-Policy結合使用來保護過程調用。

但是,我發現與Rampart 1.6.2捆綁在一起的一些示例已經過時,尤其是名為“ sample-tomcat”及其WSPasswordCallback處理程序(在此處找到)的策略示例。 WSPasswordCallback.USERNAME_TOKEN_UNKNOWN在1.6中已棄用,並且WSPasswordCallback.getPassword()始終返回null,即使在消息的安全標頭中的UsernameToken元素中提供了密碼也是如此。

所以。 我不確定從何處獲取每封郵件的用戶名/密碼。 我正在研究以下兩個選項:

  1. 用執行用戶名/密碼驗證的處理程序編寫模塊。

  2. 放棄無狀態,並編寫一個返回所有其他服務所需的令牌的登錄服務。

還有其他選擇嗎?

實際上,根據WSS4J開發人員Colm O Heigeartaigh的說法,在更改為使用驗證器接口之前,這很奇怪,請參閱他的第一篇第二篇第三篇關於WSS4J 1.6中新的驗證器設計的博客文章。

WSPasswordCallback不應處理身份驗證,它被認為是不良的設計並避免了關注點分離,因此,他們(WSS4J開發人員)重寫了WSS4J的這一部分。

但是,據我所知,Rampart開發團隊尚未實現開發人員應用自定義驗證器的方法,也沒有實現NoOpValidator之類的WSS4J驗證器的NoOpValidator -即使它在WSS4J中可用。 他們的(Rampart的)項目JIRA中注冊了一個問題( 請在此處閱讀 ),但是該問題的優先級較低,並且截至目前為止。 該問題未包含在下一個次要版本(1.6.3)或主要版本(1.7.0)中。

因此,按照我自己的喜好,您將必須執行以下三件事之一:

  • 使用基於傳輸層的身份驗證,我建議使用HTTPS傳輸的auth標頭。
  • 將Axis2和Rampart降級到1.5.x,該版本仍保持不變(嚴重的錯誤修復)。
  • 編輯wss4j的源代碼並編譯一個新的jar。
  • 為Axis2編寫一個可解決此問題的模塊。

如果還有其他解決方案/解決方法,請隨時評論/糾正我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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