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

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

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

    kapok

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

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

    本節(jié)講述安全管理功能在 EJB 體系架構(gòu)中的工作方式,并提供針對環(huán)境開發(fā)安全的 Enterprise Bean 的準(zhǔn)則。



    注意

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

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

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

    有關(guān)應(yīng)用程序安全性的一般信息,請參閱 Sun ONE 應(yīng)用服務(wù)器開發(fā)者指南



    本節(jié)介紹以下主題:

    有關(guān)應(yīng)用程序安全的一般信息,請參閱 Sun ONE 應(yīng)用服務(wù)器開發(fā)者指南

    關(guān)于安全的 Enterprise Bean


    EJB 開發(fā)者的主要角色是聲明您的應(yīng)用程序的安全要求,應(yīng)用程序開發(fā)期間,需要滿足這些要求。多數(shù)情況下,EJB 的業(yè)務(wù)方法不應(yīng)包含任何與安全相關(guān)的邏輯。

    本節(jié)介紹以下主題:

    授權(quán)和身份驗(yàn)證

    授權(quán)提供對受保護(hù)資源的受控訪問;授權(quán)以身份識別和身份驗(yàn)證為基礎(chǔ)。身份識別是通過一個(gè)系統(tǒng)實(shí)現(xiàn)實(shí)體認(rèn)可的過程。授權(quán)是驗(yàn)證計(jì)算機(jī)系統(tǒng)中用戶、設(shè)備或其他實(shí)體的身份的過程,通常作為允許訪問系統(tǒng)中資源的前提條件。

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

    安全角色

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

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

    • 角色是 J2EE 應(yīng)用程序特有的抽象概念。

    • 一個(gè)組是一組當(dāng)前領(lǐng)域中環(huán)境特定的用戶。組成員身份是通過基本領(lǐng)域?qū)嵤﹣泶_定的。



      注意

      定義方法限制和角色映射時(shí),將領(lǐng)域組和 J2EE 應(yīng)用程序角色混淆起來是一個(gè)常見的錯(cuò)誤。這樣的混淆會(huì)導(dǎo)致不希望的訪問結(jié)果或不可互操作的應(yīng)用程序配置。有關(guān)領(lǐng)域的信息,請參閱 Sun ONE 應(yīng)用服務(wù)器開發(fā)者指南



    部署

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

    部署應(yīng)用程序時(shí),部署者將角色映射到操作環(huán)境中存在的全標(biāo)識。開發(fā) Enterprise Bean 時(shí),您應(yīng)知道您的用戶的角色,但很可能不會(huì)準(zhǔn)確地知道用戶的真實(shí)身份。在 J2EE 安全體系架構(gòu)中,對此設(shè)計(jì)非常細(xì)致。部署您的組件之后,系統(tǒng)管理員將角色映射到默認(rèn)領(lǐng)域(通常為文件領(lǐng)域)的 J2EE 用戶(或組)。

    定義安全角色


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

    示例

    部署描述符中一個(gè)安全角色定義的以下示例指定了兩個(gè)角色名稱元素 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>

    聲明方法權(quán)限


    方法權(quán)限表示允許哪些角色調(diào)用哪些方法。應(yīng)用程序匯編者使用如下所示方法權(quán)限元素在部署描述符中聲明方法權(quán)限:

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

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

    • 方法權(quán)限關(guān)系作為個(gè)別方法權(quán)限元素中定義的所有方法權(quán)限的集合進(jìn)行定義。

    • 一個(gè)安全角色或一個(gè)方法可以出現(xiàn)在多個(gè) method-permission 元素中。

    示例

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

    ...
    <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 開發(fā)者應(yīng)負(fù)責(zé)聲明所有安全角色名稱的,它們用于角色的部署描述符中的 security-role-ref 元素,這些角色由程序從各自 Enterprise Bean 中進(jìn)行使用。

    • 應(yīng)用程序匯編者負(fù)責(zé)將在 security-role-ref 元素中聲明的所有安全角色引用鏈接到 security-role 元素中定義的安全角色。

    • 應(yīng)用程序匯編者使用 role-link 元素將每個(gè)安全角色引用鏈接到一個(gè)安全角色。

      注意

      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>

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

    有關(guān)安全角色的進(jìn)一步信息,請參閱 Sun ONE 應(yīng)用服務(wù)器開發(fā)者指南。有關(guān) EJB 訪問控制配置的詳細(xì)信息,請參閱 Enterprise JavaBeans Specification 2.0。

    指定安全標(biāo)識


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

    如果沒有指定,默認(rèn)情況下使用調(diào)用者標(biāo)識。.

    run-as 標(biāo)識

    run-as 標(biāo)識建立 Enterprise Bean 進(jìn)行調(diào)用操作時(shí)將使用的標(biāo)識。 run-as 標(biāo)識不會(huì)影響其調(diào)用這的標(biāo)識,這些標(biāo)識是針對訪問 Enterprise Bean 的方法權(quán)限而測試的標(biāo)識。

    EJB 匯編者可以使用 run-as 元素為部署描述符中的 Enterprise Bean 定義一個(gè) run-as 標(biāo)識。run-as 標(biāo)識總體上適用于 Enterprise Bean,即適用于 EJB 的主接口和組件接口的所有方法 EJB,或適用于消息驅(qū)動(dòng)型 Bean 的 onMessage 方法以及可能調(diào)用的 Enterprise Bean 的所有內(nèi)部方法。

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

    使用編程安全


    一般來說,應(yīng)由容器以一種對 EJB 的業(yè)務(wù)方法透明的方式執(zhí)行安全管理功能。



    注意

    就像服務(wù)件的做法一樣,Enterprise Bean 可以使用編程登錄。有關(guān)詳細(xì)信息,請參閱 Sun ONE 應(yīng)用服務(wù)器開發(fā)者指南



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

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

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

     

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

    有關(guān)如何實(shí)施編程安全的詳細(xì)信息,請參閱 Enterprise JavaBeans Specification 2.0 的第 21 章“安全管理”。

    處理不受保護(hù)的 EJB 層資源


    所有用戶都具有匿名角色。默認(rèn)情況下,匿名角色的值為 ANYONE,該值可在 server.xml 文件中進(jìn)行配置。因此,如果某個(gè)方法權(quán)限指定所需角色為 ANYONE(或?qū)⒛涿巧O(shè)置為的任何值),則任何用戶都可以訪問此方法。



    注意

    如果覆蓋某個(gè)方法的方法權(quán)限不存在,則任何人都可以訪問該方法。



    如果存在方法權(quán)限,就始終執(zhí)行此方法權(quán)限。例如,如果設(shè)置了某個(gè)方法權(quán)限,因而 updateEmployeeInfo 方法只能由 employee 角色進(jìn)行訪問,那么,如果沒有角色 employee,就始終無法訪問此方法。如果沒有把 employee 角色映射到任何用戶或組,就沒有人能夠調(diào)用 updateEmployeeInfo 方法。


    posted on 2005-05-16 14:11 笨笨 閱讀(483) 評論(0)  編輯  收藏 所屬分類: J2EEALLWeblogic Portal
    主站蜘蛛池模板: 亚洲精品少妇30p| 亚洲精品高清国产麻豆专区| 最近免费中文字幕中文高清| 亚洲国产成人私人影院| 大陆一级毛片免费视频观看| 亚洲深深色噜噜狠狠爱网站| 6080午夜一级毛片免费看| 亚洲精品国产成人专区| 毛片基地免费视频a| 精品久久久久久亚洲精品| 亚洲成a人一区二区三区| 久久久久久AV无码免费网站下载| 亚洲av高清在线观看一区二区| 亚洲国产成人综合精品| 国产亚洲一区二区三区在线观看 | 亚洲乱码一二三四五六区| 尤物永久免费AV无码网站| 日本高清免费不卡在线| a毛片在线免费观看| 亚洲色欲久久久综合网| 中文字幕乱码系列免费| 亚洲精品无码久久久久牙蜜区| 免费观看男人免费桶女人视频| 亚洲国产欧美一区二区三区| 免费被黄网站在观看| 亚洲av成人无码网站…| 亚洲日韩乱码久久久久久| 久久亚洲中文字幕精品一区| 在线免费观看一区二区三区| 精品无码免费专区毛片| 激情综合亚洲色婷婷五月APP| 国产精品视频免费观看| 成在线人视频免费视频| 国产精品亚洲专区在线播放 | 亚洲国产精品无码久久久秋霞1| 国产18禁黄网站免费观看| 香蕉免费在线视频| 久久亚洲AV成人无码国产电影| 亚洲国产综合无码一区二区二三区| 久久精品免费网站网| 国产亚洲美女精品久久久久|