<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
    主站蜘蛛池模板: 永久免费观看的毛片的网站| 一本无码人妻在中文字幕免费| 国产jizzjizz免费视频| 日本亚洲免费无线码 | 你好老叔电影观看免费| 国产亚洲精品AA片在线观看不加载 | 久久精品国产亚洲av麻豆小说 | 亚洲人成网站18禁止一区| 毛片亚洲AV无码精品国产午夜| 女人18毛片特级一级免费视频| 亚洲精品午夜国产va久久| 成人免费在线观看网站| 亚洲av无码一区二区三区人妖| 日本视频免费在线| 色偷偷亚洲第一综合网| 亚洲国产a级视频| a毛片免费全部在线播放**| 亚洲第一中文字幕| 中文字幕无码播放免费| 亚洲风情亚Aⅴ在线发布| 国产区卡一卡二卡三乱码免费 | 一个人免费视频在线观看www| 久久91亚洲精品中文字幕| 免费专区丝袜脚调教视频| 亚洲精品乱码久久久久蜜桃| 免费在线黄色网址| 中文字幕免费不卡二区| 亚洲伊人久久大香线蕉在观| 国产大片91精品免费看3| 国内精品99亚洲免费高清| 亚洲国产综合人成综合网站00| 免费高清在线影片一区| 一区二区3区免费视频| 亚洲激情在线观看| 岛国大片免费在线观看| 亚洲黄片手机免费观看| 亚洲成a人片在线观看播放| 免费va人成视频网站全| 男人进去女人爽免费视频国产| 亚洲日本乱码卡2卡3卡新区| 国产aⅴ无码专区亚洲av麻豆|