<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 11,  comments - 14,  trackbacks - 0
    Webservice交互經常需要驗證用戶,用戶名和密碼的傳遞采用SOAPHeader傳遞不失為一種好辦法。在Axis1中設置很簡單:
    客戶端:
    ((org.apache.axis.client.Call) call).addHeader(new SOAPHeaderElement("Authorization","username",username));
    ((org.apache.axis.client.Call) call).addHeader(new SOAPHeaderElement("Authorization","password",password));

    經包裝后傳遞的內容如下
    <soapenv:Header>
      <ns1:username
       soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
       soapenv:mustUnderstand="0" xsi:type="soapenc:string"
       xmlns:ns1="Authorization"
       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
       admin
      </ns1:username>
      <ns2:password
       soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
       soapenv:mustUnderstand="0" xsi:type="soapenc:string"
       xmlns:ns2="Authorization"
       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
       1
      </ns2:password>
     </soapenv:Header>

    服務端通過Handler取得用戶名和密碼進行驗證:
    username = (String) messageContext.getRequestMessage().getSOAPEnvelope()
    .getHeaderByName("Authorization","username").getValue();
    password = (String) messageContext.getRequestMessage().getSOAPEnvelope()
    .getHeaderByName("Authorization","password").getValue();

    如果覺得這樣不安全,可雙方約定一種加密解密規則,將用戶名和密碼加密后進行傳輸。

    我曾試過使用如下方法,
    客戶端:
    ((org.apache.axis.client.Call) call).setUsername(username);
    ((org.apache.axis.client.Call) call).setPassword(password);

    包裝后傳遞內容(多了最后一句:Authorization: Basic emphZG1pbjox。Axis將用戶名和密碼經Base64加密后傳遞):
    POST /web/services/GenericServer HTTP/1.0
    Content-Type: text/xml; charset=utf-8
    Accept: application/soap+xml, application/dime, multipart/related, text/*
    User-Agent: Axis/1.4
    Host: localhost:8083
    Cache-Control: no-cache
    Pragma: no-cache
    SOAPAction: ""
    Content-Length: 807
    Authorization: Basic emphZG1pbjox

    服務端的Handle:
    username =messageContext.getUsername();
    password = messageContext.getPassword();

    這樣是沒問題,看起來更簡單。可惜調用部署在weblogic上的ws時,會被weblogic攔截,必須在weblogic安全域中配置相應的用戶才能通過驗證,這不是我們所需要的,通常我們有自己的用戶管理機制,調用WS的用戶也作為系統中的一個用戶納入我們的管理,而不是跟weblogic安全域用戶綁在一起。

    posted on 2008-07-18 13:18 jinn 閱讀(5932) 評論(1)  編輯  收藏 所屬分類: Jave/Webservice

    FeedBack:
    # re: Axis中用戶名、密碼傳遞
    2008-07-19 10:10 | 高手
    http://www.HelloCTO.com
    成千視頻,上萬文章,技術資料與您共享``  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(3)

    隨筆分類

    文章分類

    相冊

    網站鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产高清国产拍精品| 久久亚洲sm情趣捆绑调教| 日本中文字幕免费高清视频| 国产成人免费手机在线观看视频| 亚洲永久在线观看| 日韩欧美一区二区三区免费观看| 亚洲日本va午夜中文字幕久久 | 亚洲黄色片在线观看| 日本在线看片免费| 亚洲激情黄色小说| 一本久久A久久免费精品不卡| 久久大香伊焦在人线免费| 亚洲午夜未满十八勿入网站2| 亚洲国产理论片在线播放| av片在线观看永久免费| 欧美男同gv免费网站观看 | 免费的黄色的网站| 国产午夜亚洲精品午夜鲁丝片| 中国国产高清免费av片| 久久久久亚洲精品无码系列| 三年片在线观看免费观看高清电影 | 伊伊人成亚洲综合人网7777| 免费一级毛片在线播放视频| 成人五级毛片免费播放| 色吊丝免费观看网站| 国产aⅴ无码专区亚洲av麻豆| 日韩视频免费在线观看| 亚洲中文无码mv| 中文字幕免费在线看线人| 亚洲综合久久一本伊伊区| 俄罗斯极品美女毛片免费播放| GOGOGO高清免费看韩国| 亚洲欧洲中文日产| 免费在线观看你懂的| 久久精品私人影院免费看| 国产亚洲精品成人AA片| 国产成人免费高清激情明星| 久久久久亚洲精品无码网址色欲| 在线看片人成视频免费无遮挡| 一级毛片在线完整免费观看| 亚洲成人在线电影|