<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)

    隨筆分類

    文章分類

    相冊

    網站鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲无吗在线视频| 嫩草在线视频www免费观看| 亚洲成a∧人片在线观看无码| 亚洲国产午夜电影在线入口| 亚洲中文字幕无码一去台湾| 久久久久亚洲国产AV麻豆| 男人免费视频一区二区在线观看| 国产免费内射又粗又爽密桃视频 | 亚洲日韩国产精品乱-久| 亚洲av午夜国产精品无码中文字| 国产男女爽爽爽免费视频 | 在线美女免费观看网站h| 永久免费bbbbbb视频| 亚洲一级片内射网站在线观看| 亚洲自偷自偷精品| 亚洲AV综合色区无码一二三区 | 午夜视频免费成人| 亚洲一区二区三区自拍公司| 亚洲国产成人精品电影| 免费激情网站国产高清第一页| 久99久精品免费视频热77| 免费网站看v片在线香蕉| 亚洲不卡av不卡一区二区| 97se亚洲国产综合自在线| 一区二区三区在线免费观看视频| **一级一级毛片免费观看| 亚洲AV日韩精品一区二区三区| 日韩精品一区二区亚洲AV观看 | 亚洲av无码专区在线| 久久精品免费网站网| 免费的一级黄色片| 久久精品国产亚洲AV大全| 一级毛片视频免费观看 | 亚洲国产精品无码久久青草| 亚洲国产精品综合久久网各| 一区二区免费电影| 免费观看一级毛片| 亚洲国产精品xo在线观看| 青青操免费在线视频| 又粗又硬又大又爽免费视频播放| 亚洲成人网在线播放|