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

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

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

    kapok

    垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
    http://www.huihoo.com/middleware/application_server/sunone/app7_ejb/desecur.html
    開發安全的 Enterprise Bean

    本節講述安全管理功能在 EJB 體系架構中的工作方式,并提供針對環境開發安全的 Enterprise Bean 的準則。



    注意

    如果不熟悉 EJB 技術,請參閱 Java 軟件教程:

    http://java.sun.com/j2ee/docs.html

    有關 EJB 安全性的信息,請參閱 Enterprise JavaBeans Specification 2.0 第 21 章“安全管理”。

    有關應用程序安全性的一般信息,請參閱 Sun ONE 應用服務器開發者指南



    本節介紹以下主題:

    有關應用程序安全的一般信息,請參閱 Sun ONE 應用服務器開發者指南

    關于安全的 Enterprise Bean


    EJB 開發者的主要角色是聲明您的應用程序的安全要求,應用程序開發期間,需要滿足這些要求。多數情況下,EJB 的業務方法不應包含任何與安全相關的邏輯。

    本節介紹以下主題:

    授權和身份驗證

    授權提供對受保護資源的受控訪問;授權以身份識別和身份驗證為基礎。身份識別是通過一個系統實現實體認可的過程。授權是驗證計算機系統中用戶、設備或其他實體的身份的過程,通常作為允許訪問系統中資源的前提條件。

    Enterprise Bean 可配置為僅允許具有適當授權級別的用戶進行訪問。此任務是通過利用 Sun ONE 應用服務器管理界面為應用程序 EAR 和 EJB JAR 文件生成部署描述符來完成的。

    安全角色

    安全角色是應用程序特有的邏輯用戶分組,具體按照通用特征(如客戶概要或工作頭銜)分類。部署一個應用程序時,可以將角色映射到安全標識,如操作環境中的原則(principal)(作為身份驗證結果指定給用戶的標識)或組。基于此,具有某種安全角色的用戶對 Enterprise Bean 具有關聯訪問權限。鏈接為所引用的安全角色的實際名稱。

    一個組也可以代表一個用戶類別,但其范圍不同于一個角色的范圍。

    • 角色是 J2EE 應用程序特有的抽象概念。

    • 一個組是一組當前領域中環境特定的用戶。組成員身份是通過基本領域實施來確定的。



      注意

      定義方法限制和角色映射時,將領域組和 J2EE 應用程序角色混淆起來是一個常見的錯誤。這樣的混淆會導致不希望的訪問結果或不可互操作的應用程序配置。有關領域的信息,請參閱 Sun ONE 應用服務器開發者指南



    部署

    安全角色引用定義使用 isCallerInRole(字符串名稱)從 Enterprise Bean 調用的角色的名稱與已為應用程序定義的安全角色的名稱之間的映射。此安全性角色引用使一個 Enterprise Bean 可以引用一個現有安全角色。

    部署應用程序時,部署者將角色映射到操作環境中存在的全標識。開發 Enterprise Bean 時,您應知道您的用戶的角色,但很可能不會準確地知道用戶的真實身份。在 J2EE 安全體系架構中,對此設計非常細致。部署您的組件之后,系統管理員將角色映射到默認領域(通常為文件領域)的 J2EE 用戶(或組)。

    定義安全角色


    要為 J2EE 應用程序創建一個角色,需要為 EJB JAR 文件或應用程序中包含的 WAR 文件聲明該角色。security-role 元素中定義的安全角色的范圍限制在 EJB JAR 文件級別,并適用于 EJB JAR 文件中的所有 Enterprise Bean。

    示例

    部署描述符中一個安全角色定義的以下示例指定了兩個角色名稱元素 employeeadmin

    ...
    <assembly-descriptor>
       <security-role>
          <description>
             This role includes the employees of the enterprise who
             are allowed to access the employee self service
             application. This role is allowed to access only
             her/his information
          </desciption>
          <role-name>employee<role-name>
          </security-role>
          <security-role>
             <description>
                This role should be assigned to the personnel
                authorized to perform administrative functions
                for the employee self service application. This
                role does not have direct access to
                sensitive employee and payroll information
             </desciption>
          <role-name>admin<role-name>
          </security-role>
    ...
    </assembly-descriptor>

    聲明方法權限


    方法權限表示允許哪些角色調用哪些方法。應用程序匯編者使用如下所示方法權限元素在部署描述符中聲明方法權限:

    • 每個 method-permission 元素都有一個包含一個或多個安全角色的列表以及一個包含一個或多個方法的列表。

      列出的所有安全角色都可以調用列出的所有方法。列表中的每個安全角色通過 role-name 元素識別,而每個方法(或方法集,如下面所述)則通過方法元素識別。可以使用說明元素將一個可選說明與 method-permission 元素關聯。

    • 方法權限關系作為個別方法權限元素中定義的所有方法權限的集合進行定義。

    • 一個安全角色或一個方法可以出現在多個 method-permission 元素中。

    示例

    以下部署描述符示例說明如何在部署描述符中給安全角色指定方法權限。部署時將這些方法權限轉換為安全元素。

    ...
    <method-permission>
       <role-name>employee</role-name>
          <method>
          <ejb-name>EmployeeService</ejb-name>
          <method-name>*</method-name>
       </method>
    </method-permission>

    <method-permission>
       <role-name>employee</role-name>
       <method>
          <ejb-name>AardvarkPayroll</ejb-name>
          <method-name>findByPrimaryKey</method-name>
       </method>
       <method>
          <ejb-name>AardvarkPayroll</ejb-name>
          <method-name>getEmployeeInfo</method-name>
       </method>
       <method>
          <ejb-name>AardvarkPayroll</ejb-name>
          <method-name>updateEmployeeInfo</method-name>
       </method
    </method-permission>
    ...

    聲明安全角色引用


    EJB 開發者應負責聲明所有安全角色名稱的,它們用于角色的部署描述符中的 security-role-ref 元素,這些角色由程序從各自 Enterprise Bean 中進行使用。

    • 應用程序匯編者負責將在 security-role-ref 元素中聲明的所有安全角色引用鏈接到 security-role 元素中定義的安全角色。

    • 應用程序匯編者使用 role-link 元素將每個安全角色引用鏈接到一個安全角色。

      注意

      role-link 元素值必須是 security-role 元素中定義的安全角色名稱之一。



    示例

    以下部署描述符示例說明如何將名為 payroll 的安全角色引用鏈接到名為 payroll-department 的安全角色。

    <enterprise-beans>
       ...    
       <entity>
          <ejb-name>AardvarkPayroll</ejb-name>
          <ejb-class>com.aardvark.payroll.PayrollBean</ejb-class>
       ...
          <security-role-ref>
          <description> This role should be assigned to the payroll
          department's employees. Members of this role have access to
          anyone's payroll record. The role has been linked to the
          payroll-department role.
          </description>
          <role-name>payroll</role-name>
          <role-link>payroll-department</role-link>
          </security-role-ref>
       ....
       </entity>
       ...
    </enterprise-beans>

    應把此角色指定給薪資部的員工。此角色的成員可以訪問任何人的薪資記錄。該角色已被鏈接到 payroll-department 角色。

    有關安全角色的進一步信息,請參閱 Sun ONE 應用服務器開發者指南。有關 EJB 訪問控制配置的詳細信息,請參閱 Enterprise JavaBeans Specification 2.0。

    指定安全標識


    EJB 匯編者可以隨意指定是否將調用者的標識用于執行 EJB 方法,或指定是否使用 run-as 身份。出于此目的,使用部署描述符中的 security-identity 元素。security-identity 元素的值為 use-caller-identity or run-as

    如果沒有指定,默認情況下使用調用者標識。.

    run-as 標識

    run-as 標識建立 Enterprise Bean 進行調用操作時將使用的標識。 run-as 標識不會影響其調用這的標識,這些標識是針對訪問 Enterprise Bean 的方法權限而測試的標識。

    EJB 匯編者可以使用 run-as 元素為部署描述符中的 Enterprise Bean 定義一個 run-as 標識。run-as 標識總體上適用于 Enterprise Bean,即適用于 EJB 的主接口和組件接口的所有方法 EJB,或適用于消息驅動型 Bean 的 onMessage 方法以及可能調用的 Enterprise Bean 的所有內部方法。

    由于匯編者一般不知道操作環境的安全環境,因而按一個邏輯角色名指定 run-as 標識,該邏輯角色名與部署描述符中定義的安全角色之一相對應。然后,部署者必須指定一個作為 run-as 標識的原則使用的安全原則(在操作環境中定義)。安全原則應是一個已經指定給安全角色的與 role-name 元素指定的相同的原則。

    使用編程安全


    一般來說,應由容器以一種對 EJB 的業務方法透明的方式執行安全管理功能。



    注意

    就像服務件的做法一樣,Enterprise Bean 可以使用編程登錄。有關詳細信息,請參閱 Sun ONE 應用服務器開發者指南



    EJB 層中的編程安全由 getCallerPrincipalisCallerInRole 方法組成。您可以使用 getCallerPrincipal 方法確定 Enterprise Bean 的調用者,以及使用 isCallerInRole 方法確定調用者的角色。

    EJBContext 接口的 getCallerPrincipal 方法返回識別 Enterprise Bean 的調用者的 java.security.Principal 對象。(在此情況下,原則與一個用戶相同。在以下示例中,一個 Enterprise Bean 的 getUser 方法返回調用它的 J2EE 用戶的名稱:

       public String getUser()
       {
          return context.getCallerPrincipal().getName();
       }

     

       boolean result = context.isCallerInRole("Customer");

    有關如何實施編程安全的詳細信息,請參閱 Enterprise JavaBeans Specification 2.0 的第 21 章“安全管理”。

    處理不受保護的 EJB 層資源


    所有用戶都具有匿名角色。默認情況下,匿名角色的值為 ANYONE,該值可在 server.xml 文件中進行配置。因此,如果某個方法權限指定所需角色為 ANYONE(或將匿名角色設置為的任何值),則任何用戶都可以訪問此方法。



    注意

    如果覆蓋某個方法的方法權限不存在,則任何人都可以訪問該方法。



    如果存在方法權限,就始終執行此方法權限。例如,如果設置了某個方法權限,因而 updateEmployeeInfo 方法只能由 employee 角色進行訪問,那么,如果沒有角色 employee,就始終無法訪問此方法。如果沒有把 employee 角色映射到任何用戶或組,就沒有人能夠調用 updateEmployeeInfo 方法。


    posted on 2005-05-16 14:11 笨笨 閱讀(484) 評論(0)  編輯  收藏 所屬分類: J2EEALLWeblogic Portal
    主站蜘蛛池模板: 日韩免费一级毛片| 亚洲成a人片在线观看久| 亚洲爆乳成av人在线视菜奈实| 国产资源免费观看| 三年片免费观看大全国语| 亚洲不卡中文字幕| 全亚洲最新黄色特级网站 | 亚洲精品白浆高清久久久久久| 最刺激黄a大片免费网站| 日韩国产欧美亚洲v片| 日韩va亚洲va欧洲va国产| 拍拍拍又黄又爽无挡视频免费| 一级毛片在线免费视频| 亚洲剧场午夜在线观看| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲无砖砖区免费| 无码日韩人妻AV一区免费l| 亚洲黄色免费观看| 国产亚洲精品免费视频播放| 国产无人区码卡二卡三卡免费| 久99久无码精品视频免费播放| 亚洲av极品无码专区在线观看| 在线观看亚洲精品国产| 成人毛片手机版免费看| 国产好大好硬好爽免费不卡| 老湿机一区午夜精品免费福利| 麻豆亚洲av熟女国产一区二| 久久久久国产亚洲AV麻豆| 暖暖日本免费在线视频| 在免费jizzjizz在线播| 中文字幕不卡免费高清视频| 国产亚洲精品精品精品| 精品亚洲AV无码一区二区三区 | 亚洲中文无码mv| 亚洲午夜在线电影| 国产亚洲AV手机在线观看| 免费国产成人高清在线观看麻豆| 美女视频黄的全免费视频网站| 野花香高清在线观看视频播放免费 | 无码的免费不卡毛片视频| 亚洲国产精品无码第一区二区三区|