<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • J2EE的安全認(rèn)證機(jī)制

    時(shí)間:2024-09-25 03:56:53 J2EE培訓(xùn) 我要投稿
    • 相關(guān)推薦

    J2EE的安全認(rèn)證機(jī)制

      Web應(yīng)用程序的安全機(jī)制有二種組件:認(rèn)證和授權(quán)。基于J2EE的Web容器提供三種類型的認(rèn)證機(jī)制:基本認(rèn)證、基于表單的認(rèn)證、相互認(rèn)證。由于能夠?qū)φJ(rèn)證用戶界面進(jìn)行定制,大多數(shù)的Web應(yīng)用程序都使用基于表單的認(rèn)證。Web容器使用在Web應(yīng)用程序的部署描述符中定義的安全角色對(duì)應(yīng)用程序的Web資源的訪問進(jìn)行授權(quán)。

      在使用基于表單的認(rèn)證機(jī)制中,應(yīng)用程序的設(shè)計(jì)人員和開發(fā)人員會(huì)遇到3類問題:

      基于表單的認(rèn)證如何與數(shù)據(jù)庫和LDAP等其他領(lǐng)域的安全機(jī)制協(xié)同工作。(這是非常必要的,因?yàn)樵S多組織已經(jīng)在數(shù)據(jù)庫和LDAP表單中實(shí)現(xiàn)了認(rèn)證機(jī)制。)

      如何在Web應(yīng)用程序的部署描述符(web.xml)中增加或刪除授權(quán)角色。

      Web容器在Web資源層次上進(jìn)行授權(quán);應(yīng)用程序則需要在單一的Web資源中執(zhí)行功能層次上的授權(quán)。

      盡管有許多與基于表單的認(rèn)證有關(guān)的文檔和例子,但都沒有能夠闡明這一問題。因此,大多數(shù)的應(yīng)用程序都以自己的方式襀安全機(jī)制。

      本篇文章說明了基于表單的認(rèn)證如何與其他方面的安全機(jī)制,尤其是數(shù)據(jù)庫中的安全機(jī)制協(xié)作的問題。它還解釋了Web窗口如何使用安全角色執(zhí)行授權(quán)以及應(yīng)用程序如何擴(kuò)展這些安全角色,保護(hù)Web資源中的功能。

      基于表單的認(rèn)證

      基于表單的認(rèn)證能夠使開發(fā)人員定制認(rèn)證的用戶界面。web.xml的login-config小節(jié)定義了認(rèn)證機(jī)制的類型、登錄的URI和錯(cuò)誤頁面。

      FORM

      /login.jsp

      /fail_login.html

      登錄表單必須包含輸入用戶姓名和口令的字段,它們必須被分別命名為j_username和j_password,表單將這二個(gè)值發(fā)送給j_security_check邏輯名字。

      下面是一個(gè)該表單如何在HTML網(wǎng)頁中實(shí)現(xiàn)的例子:

      除非所有的連接都是在SSL上實(shí)現(xiàn)的,該表單能夠透露用戶名和口令。當(dāng)受保護(hù)的Web資源被訪問時(shí),Web容器就會(huì)激活為該資源配置的認(rèn)證機(jī)制。

      為了實(shí)現(xiàn)Web應(yīng)用程序的安全,Web容器執(zhí)行下面的步驟:

      在受保護(hù)的Web資源被訪問時(shí),判斷用戶是否被認(rèn)證。

      如果用戶沒有得到認(rèn)證,則通過重定向到部署描述符中定義的注冊頁面,要求用戶提供安全信任狀。

      根據(jù)為該容器配置的安全領(lǐng)域,確認(rèn)用戶的信任狀有效。

      判斷得到認(rèn)證的用戶是否被授權(quán)訪問部署描述符(web.xml)中定義的Web資源。

      象基本的安全認(rèn)證機(jī)制那樣,在Web應(yīng)用程序的部署描述符中,基于表單的認(rèn)證不指定安全區(qū)域。也就是說,它不明確地定義用來認(rèn)證用戶的安全區(qū)域類型,這就會(huì)在它使用什么樣的安全區(qū)域認(rèn)證用戶方面引起混淆。

      要對(duì)用戶進(jìn)行驗(yàn)證,Web窗口需要完成下面的步驟:

      判斷該容器配置的安全區(qū)域。

      使用該安全區(qū)域進(jìn)行認(rèn)證。

      由于數(shù)據(jù)庫和LDAP在維護(hù)信息方面提供了更大的靈活性,因此大多數(shù)組織都會(huì)希望繼續(xù)使用它們維護(hù)安全認(rèn)證和授權(quán)信息。

      許多Web窗口都支持不同類型的安全區(qū)域:數(shù)據(jù)庫、LDAP和定制區(qū)域。例如,在Tomcat Web容器中,server.xml將數(shù)據(jù)庫配置為其安全區(qū)域。

      debug="99"

      driverName="oracle.jdbc.driver.OracleDriver"

      connectionURL="jdbc:oracle:thin:@{IPAddress}:{Port}:{Servicename}"

      connectionName="{DB Username}"

      connectionPassword="{Password}"

      userTable="users"

      userNameCol="username"

      userCredCol="password"

      userRoleTable="user_roles"

      roleNameCol="rolename" />

      Tomcat的server.xml的標(biāo)志定義了窗口用來識(shí)別一個(gè)用戶的安全區(qū)域的類型。注意,容器對(duì)Web應(yīng)用程序使用該區(qū)域,應(yīng)用程序的認(rèn)證機(jī)制是基于表單的。

      授權(quán)

      一旦用戶被識(shí)別后,容器就會(huì)得到認(rèn)證用戶的安全角色,看用戶是否屬于在部署描述符中的標(biāo)志中定義的安全角色之一。如果用戶不屬于任何一個(gè)安全角色,則容器會(huì)返回一個(gè)錯(cuò)誤。

      部署描述符(web.xml)的標(biāo)志定義了被保護(hù)的Web資源和能夠訪問這些資源的安全角色清單。

      AdminPages

      accessible by authorised users

      /admin/*

      GET

      These are the roles who have access

      manager

      Web窗口在網(wǎng)頁層次上執(zhí)行認(rèn)證。然而,商業(yè)性應(yīng)用程序可能還希望對(duì)一個(gè)網(wǎng)頁內(nèi)的功能進(jìn)行認(rèn)證,這會(huì)要求在應(yīng)用程序中定義一些新的附加的與應(yīng)用程序有關(guān)的安全角色。為了控制對(duì)功能的訪問,應(yīng)用程序需要理解角色的權(quán)限概念。Web容器標(biāo)準(zhǔn)沒有解決權(quán)限的問題。

      由于授權(quán)角色是動(dòng)態(tài)的,開發(fā)人員常常會(huì)感到迷惑,即這些安全角色是否需要添加到部署描述符中。為了使應(yīng)用程序充分利用安全支持,Web容器只需要在部署描述符中定義的一個(gè)角色。因此,應(yīng)用程序可以定義一個(gè)高層次的角色,然后將所有的用戶都指派給該角色。這將使該角色中的所有用戶都擁有能夠訪問Web資源的權(quán)限。

      另外,應(yīng)用程序還可以定義額外的角色,執(zhí)行對(duì)一種Web資源中較低層次的功能的授權(quán)。由于應(yīng)用程序已經(jīng)配置有一個(gè)包含應(yīng)用程序中所有用戶的高層次安全角色,這些低層次的安全角色也就不需要在部署描述符中進(jìn)行定義。這使得Web應(yīng)用程序能夠利用容器的授權(quán)支持,實(shí)現(xiàn)與指定應(yīng)用程序有關(guān)的授權(quán)。

      我們可以在部署描述符中為所有用戶定義一個(gè)高層次的管理員角色,保護(hù)管理類Web資源,這使得管理員角色中的所有用戶都能夠訪問管理網(wǎng)頁。為了控制管理網(wǎng)頁中的其他功能,我們可以在應(yīng)用程序中創(chuàng)建 sysadmin或appadmin等新的角色。

      應(yīng)用程序可以對(duì)這些安全角色進(jìn)行擴(kuò)展,使它們擁有一定的權(quán)限。然后,應(yīng)用程序可以使用這些權(quán)限來控制對(duì)其功能的訪問。

      盡管與特定應(yīng)用程序相關(guān)的安全角色不是定義在部署描述符中的,這些角色仍然可以在isUserInRole方法中使用,判斷用戶是否在這些安全角色中。

      優(yōu)點(diǎn)

      Web應(yīng)用程序無需實(shí)現(xiàn)認(rèn)證機(jī)制,簡化Web應(yīng)用程序的配置。

      Web應(yīng)用程序能夠使用getRemoteUser、IsUserInRole和getUserPrincipal方法實(shí)現(xiàn)有規(guī)劃的安全。

      Web應(yīng)用程序能夠?qū)⒄J(rèn)證信息傳播給EJB容器。

      在Tomcat中配置數(shù)據(jù)庫安全區(qū)域

      1. 創(chuàng)建用戶表。

      該數(shù)據(jù)庫表需要有username和password二個(gè)字段。

      create table users (username varchar(20) not null, password(20) not null)

      2. 創(chuàng)建角色表

      該表維護(hù)著應(yīng)用程序中角色的清單,它僅僅有rolename一個(gè)字段。

      create table roles (rolename varchar(20) not null)

      3. 創(chuàng)建用戶-角色關(guān)聯(lián)表

      該表維護(hù)著一個(gè)用戶和各個(gè)角色之間的關(guān)聯(lián),一個(gè)用戶可以屬于一個(gè)或多個(gè)角色。

      create table user_roles (username varchar(20) not null, rolename varchar(20) not null)

      4. 在表中插入數(shù)據(jù)

      insert into users values('user1', 'password')

      insert into role values('manager')

      insert into user_roles values('user1', 'manager')

      5. 通過將下面的信息拷貝到{tomcat}\conf\文件夾的server.xml文件中,配置Tomcat。(本例使用了薄客戶端驅(qū)動(dòng)程序,Tomcat使用內(nèi)存區(qū)域作為缺省的安全區(qū)域,我們使用基于數(shù)據(jù)庫的安全區(qū)域)

      debug="99"

      driverName="oracle.jdbc.driver.OracleDriver"

      connectionURL="jdbc:oracle:thin:@{IP address}:{Port}:{Servicename}"

      connectionName="{DB Username}"

      connectionPassword="{Password}"

      userTable="users"

      userNameCol="username"

      userCredCol="password"

      userRoleTable="user_roles"

      roleNameCol="rolename"

      />

      用環(huán)境變量替換下面的值:

      {IP Address} ━━數(shù)據(jù)庫服務(wù)器的IP地址

      {Port} ━━端口號(hào)

      {Servicename} ━━服務(wù)名字

      {DB Username} ━━數(shù)據(jù)庫登錄

      {Password} ━━數(shù)據(jù)庫登錄的口令

      6. 將Oracle的薄客戶機(jī)驅(qū)動(dòng)程序JAR文件或數(shù)據(jù)庫的JDBC驅(qū)動(dòng)程序拷貝到{tomcat_home}/server/lib目錄中。

      7. 用下面的安全約束配置Web應(yīng)用程序的部署描述符

      Protected Area

      /*

      DELETE

      GET

      POST

      PUT

      manager

      NONE

      FORM

      Example Form-Based Authentication Area

      /jsp/login.jsp

      /jsp/error.jsp

      需要注意的是,中的值應(yīng)當(dāng)是用戶-角色關(guān)聯(lián)表中中角色之一。

      在Tomcat中配置例子文件

      使用上面介紹的命令配置Tomcat。

      打包你的工程,并將它拷貝到Tomcat的webapps目錄。

      啟動(dòng)Tomcat服務(wù)器

      打開一個(gè)瀏覽器,輸入下面的地址:http://localhost:8080/useProjectName/index.jsp

      輸入用戶名和口令。

      在WebLogic中配置數(shù)據(jù)庫安全區(qū)域

      配置Web應(yīng)用程序的部署描述符,這一過程與在Tomcat中配置非常相似。Tomcat和WebLogic的配置描述符之間的一個(gè)差別是,WebLogic配置描述符要求下面的小節(jié),而Tomcat不需要下面的小節(jié):

      Manager security role

      manager

      結(jié)論

      通過本篇文章,讀者應(yīng)該會(huì)對(duì)基于表單的認(rèn)證、以及它如何與數(shù)據(jù)庫安全區(qū)域配合進(jìn)行認(rèn)證有個(gè)比較深刻的認(rèn)識(shí)。Web應(yīng)用程序能夠利用基于表單的認(rèn)證機(jī)制,保護(hù)它的資源,同時(shí)允許使用以前的安全認(rèn)證機(jī)制。

    【J2EE的安全認(rèn)證機(jī)制】相關(guān)文章:

    2016年J2EE認(rèn)證試題(附答案)08-16

    2016年J2EE認(rèn)證測試題及答案09-27

    JAVA認(rèn)證基礎(chǔ)知識(shí):基于反射機(jī)制的服務(wù)代理調(diào)用09-20

    2016年JAVA認(rèn)證基礎(chǔ)知識(shí):基于反射機(jī)制的服務(wù)代理調(diào)用08-21

    什么是J2EE07-05

    j2ee介紹07-22

    J2EE的概念08-23

    ccna安全認(rèn)證考試指南07-12

    思科認(rèn)證網(wǎng)絡(luò)工程師CCNA安全認(rèn)證考試大綱08-22

    Adobe認(rèn)證技術(shù)認(rèn)證內(nèi)容08-21

    主站蜘蛛池模板: 亚洲精品欧美综合| 九九精品在线视频| 国产成人精品综合在线观看| 亚洲国产精品成人久久| 精品无码综合一区| 91精品国产福利在线观看麻豆| 精品国际久久久久999波多野| 拍国产乱人伦偷精品视频| 99热成人精品免费久久| 国产成人精品精品欧美| 精品9E精品视频在线观看| 亚洲永久精品ww47| 四虎国产精品永久在线看| 精品一区二区三区色花堂| 国产精品国产三级国产a| 91精品国产91久久久久久| www.久久精品| 国产日韩精品中文字无码| 日韩精品无码一本二本三本| 一本色道久久88综合日韩精品| 精品精品国产理论在线观看| 国产精品国产三级国产AⅤ| 青青青青久久精品国产h| 国产成人精品天堂| 99精品国产高清一区二区麻豆| 人妻少妇精品中文字幕av蜜桃| 伊人久久综合精品无码AV专区| 亚洲精品视频在线看| 日韩精品一二三四区| 欧美日韩专区麻豆精品在线 | 国内精品伊人久久久久| 97人妻无码一区二区精品免费| 国产精品免费看久久久| 国产精品99精品无码视亚| 国产精品美女一区二区视频| 99久久精品国产高清一区二区| 国内精品久久久久久野外| 香蕉国产精品频视| 国产精品久久久久乳精品爆| 国产精品成人小电影在线观看| 久久精品国产欧美日韩|