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

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

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

    posts - 19,  comments - 11,  trackbacks - 0

    如果用XFire 實(shí)現(xiàn)WS-Secuiry 在http://xfire.codehaus.org/WS-Security 

    下面說(shuō)說(shuō)如何寫(xiě)Client 去 調(diào)用User Token Authentication 的 WS-Security.

    1.用Xfire 根據(jù)WSDL 去生成 Client stub.
    通常,用eclipse的XFire plug-in, 里面有一個(gè)Code generation from WSDL document的Wizard.生成的java文件里通常有xxxxServiceClient.java xxxxServcie.java xxxxServiceImpl.java 等文件.

    如果不考慮WS-Security Client code 很容易寫(xiě)
    例如:

    xxxxServiceClient service = new xxxxxServiceClient();

    xxxxService client = service.getxxxServiceHttpPort("http://localhost:8080/services/xxxxService");


    2
    . 加WS-Security
    最好不要改XFire 生成的文件, 而是在自己的調(diào)用程序里增加.這樣將來(lái)WSDL改變, 可以在用XFire 生成Code 而不影響自己的程序

    xxxxServiceClient service = new xxxServiceClient();

    xxxxService client = service.getxxxxServiceHttpPort("http://localhost:8080/services/xxxxService");

    addWSSecurity(stallInfoClient);

    public void addWSSecurity(StallInfoService stallInfoService)
     {
         Client client = org.codehaus.xfire.client.Client.getInstance(stallInfoService);
         client.addOutHandler(new DOMOutHandler());
         Properties properties = new Properties();
            configureOutProperties(properties);
            WSS4JOutHandler wss4jOutHandler = new WSS4JOutHandler(properties);
            Map props = wss4jOutHandler.getProperties();
            PasswordHandler pwdHandler = new PasswordHandler();
            pwdHandler.setPassword(password);
            props.put(WSHandlerConstants.PW_CALLBACK_REF, pwdHandler);
            wss4jOutHandler.setProperties(props);
            client.addOutHandler(wss4jOutHandler);
     }
    protected void configureOutProperties(Properties config)
        {
            // Action to perform : user token
            config.setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
            // Password type : plain text
            config.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
            // for hashed password use:
            //properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
            // User name to send
            config.setProperty(WSHandlerConstants.USER, username);

        }
    public class PasswordHandler implements CallbackHandler {
           private String password = " ";
           public PasswordHandler() {       }
          
           public void setPassword(String password) {
             this.password = password;
           }
           public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
               WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
               String uid = pc.getIdentifer();
               pc.setPassword(password);
           }
    }
     
    當(dāng)使用WSHandlerConstants.PW_CALLBACK_REF Xfire 有缺陷, 如果不手動(dòng)把 passwordhandler 加入wss4jOutHandler的properties里, 將來(lái)是XFire無(wú)法調(diào)用自己的passwordhandler變量,  WSHandlerConstants.PW_CALLBACK_CLASS 沒(méi)有這個(gè)問(wèn)題.

    通過(guò)這種方法,Client 就會(huì)在SOAP request 加入 security head.

    <soap:Envelope xmlns:soap=" <soap:Header>
    <wsse:Security soap:mustUnderstand="1" xmlns:wsse="
    http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
       <wsse:UsernameToken
    wsu:Id="UsernameToken-26235040" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
       <wsse:Username
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">username
       </wsse:Username>
       <wsse:Password Type="
    http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">password
       </wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    </soap:Header>
    <soap:Body>
    <GetRequest
    xmlns="....">11</GetRequest>
    </soap:Body>
    </soap:Envelope
    >

    posted on 2008-11-14 15:08 happyy2k 閱讀(2357) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): Web Service

    FeedBack:
    # re: 編寫(xiě)User Token Authentication 的 WS-Security client
    2007-05-08 18:12 | suwu
    good,正在找ws-security在xfire中的使用方面的資料,正好合用,希望能在寫(xiě)多些這方面的資料!  回復(fù)  更多評(píng)論
      
    # re: 編寫(xiě)User Token Authentication 的 WS-Security client
    2007-05-08 18:38 | hernry
    sever的呢?  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2008年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    常用鏈接

    留言簿(2)

    隨筆分類(lèi)(20)

    隨筆檔案(12)

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: a级毛片免费网站| 三上悠亚亚洲一区高清| 本免费AV无码专区一区| 亚洲最大的成人网| 亚洲综合成人网在线观看| 亚洲国产激情一区二区三区| 亚洲中文无码永久免费| 免费福利电影在线观看| 香蕉国产在线观看免费| 亚洲国产精品久久久久秋霞小| 亚洲高清无在码在线无弹窗| 国产成人综合亚洲AV第一页| 全部免费国产潢色一级| 欧洲黑大粗无码免费| 久久A级毛片免费观看| 叮咚影视在线观看免费完整版| 免费VA在线观看无码| 亚洲熟妇AV一区二区三区浪潮| 亚洲精品美女在线观看| 久久久亚洲精品国产| 成人亚洲性情网站WWW在线观看| 国产一级大片免费看| 午夜小视频免费观看| 在线观看免费人成视频色| 成年人免费的视频| 69pao强力打造免费高清| 16女性下面无遮挡免费| 日韩内射激情视频在线播放免费 | 桃子视频在线观看高清免费视频| 精品熟女少妇aⅴ免费久久| 日产久久强奸免费的看| 午夜在线亚洲男人午在线| 老牛精品亚洲成av人片| 久久亚洲中文无码咪咪爱| 朝桐光亚洲专区在线中文字幕| 亚洲丁香婷婷综合久久| 亚洲成av人在线观看网站| 亚洲AV综合色区无码一二三区| 亚洲国产精品嫩草影院| 羞羞漫画登录页面免费| 污视频网站在线免费看|