• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Web Service實現軟件質量保證SOA的關注點分離

    發布: 2009-8-18 11:07 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 32次 | 進入軟件測試論壇討論

    領測軟件測試網

    需要配置的最后一個屬性是objectDefinitionSource。這就是如何指定訪問受保護的對象上不同方法所需要的認證。在這里,我們只想保護transferFunds()方法,并且只允許訪問manager。通過列出所有符合條件的類名、方法名和進行訪問所需的角色來實現:

      com.mybank.bizlogic.AccountMgr.transferFunds=ROLE_MANAGER

      定制的Axis處理程序

      如先前所描述的,我們需要某個事物來連接Web service安全上下文和Acegi安全上下文。這里即用到定制的Axis處理程序AcegiBridgeAuthenticationHandler。我們保持了非常簡單的實現,這樣易于解釋?赡芤鹱⒁獾牡谝患虑槭撬鼘嶋H上沒有進行任何認證。我們只是從MessageContext中得到用戶名和密碼,然后照舊使用它們。當然,事實上真正的實現將嘗試驗證該信息。需要考慮的事情是真正的實現應該從SOAP消息中提取WS-Security頭,然后進行處理以得到認證信息,而不是像我們這樣僅僅從Axis MessageContext對象中提取他們。

      得到認證信息后,接下來就是使其可用于Acegi。通過創建認證令牌,并在Acegi安全上下文中進行設置來實現。由于在進行用戶名和密碼認證,因此將創建UsernamePasswordAuthenticationToken的實例。進行創建前,需要指定為該主體授予了哪些權限。通過使用GrantedAuthority接口和稱為GrantedAuthorityImpl的簡單實現來實現。由于使用RoleVoter來進行訪問決策,因此我們將進行授權的機構是角色。這里我們再次簡化了實現,對其進行硬編碼,授權主體manager角色,因為該角色是在POJO上調用transferFunds()方法所需要的。真正的實現可能將獲取用戶名和密碼,然后在數據庫或目錄服務器中進行查找,以找到與該主體實際相關的角色;蛘,在某些情況下,可在WS-Security頭中以SAML聲明形式獲得該信息。

      在任何情況下,一旦完成,都將創建UsernamePasswordAuthenticationToken實例,傳遞用戶名、密碼和授權的角色。通過使用這種形式的構造方法(采用GrantedAuthority數組),實際上在告知Acegi此令牌已經過了認證,因此不必再次進行認證。接下來,通過在SecurityContextHolder上

      調用靜態方法來得到SecurityContext,并將認證令牌設置到SecurityContext中,F在認證和角色信息對于Acegi是下游可用的,用于執行其安全檢查。因此,我們已有效地將Web service安全上下文連接到Acegi安全上下文。

      有幾件需要考慮的其他事情。首先,Acegi還提供了非?煽康恼J證能力,因此不是讓Axis處理程序來關注認證,可以讓Acegi做這些事情。若要這樣做,使用未采用GrantedAuthority數組的構造方法來創建未經認證的認證令牌。用戶還需要確保配置了適當的認證提供程序,而不是使用AnonymousAuthenticationProvider。第二,Acegi不僅支持用戶名/密碼認證,還支持其他認證。例如,如果在進行基于PKI的認證,用戶可以使用X509AuthenticationToken,而不是UsernamePasswordAuthenticationToken。

      最后,需要配置Axis,在服務的請求處理路徑上包含該處理程序。通過向Axis配置文件deploy.wsdd和server-config.wsdd添加以下條目來實現:

      use="literal">

     結束語

      關注點分離是開發面向服務的架構的關鍵原則。但是,它不僅需要應用到架構級,還需要應用到實現級。在本文中,我們演示了如何使用Axis、Spring和Acegi來實現符合SOA原則的受保護Web service。如示例代碼所示,使用該方法使處理每個服務關注點的代碼中的交叉依賴性減至最小。我們所給出的示例是刻意保持簡單的,但應將其作為基礎,用于開發具有可靠安全機制(結合了Web service安全性和Acegi提供的應用程序級安全性)的Web service。如前所述,真正的系統很可能需要開發處理程序,用來處理WS-Security頭并將它們連接到Acegi安全上下文。一種方法是采用Apache工具包WSS4J,然后擴展其Axis處理程序以填充Acegi安全上下文,如本文所述?赡苄枰M行一些其他工作來創建捕獲Acegi安全異常的Axis出站處理程序,并創建返回到客戶端的更有意義的SOAP錯誤。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    55/5<12345

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>