熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

安全技術 Java與安全性,第1部分二(圖)

2013-11-23 19:53:15  來源: Java高級技術 

  用戶和組
  
  為列出屬於某個安全域的用戶從Administration Console選擇該安全域然後選擇Users節點然後可以使用右側窗格來查看所有用戶或者過濾清單System用戶帳號也將是清單的一部分——這是當使用Configuration Wizard(配置向導)創建域時定義的Administration用戶帳號選擇Configure a new User創建一個新用戶需要為每個用戶指定一個名稱一段簡短的描述和一個密碼注意安全域中所有的用戶名必須是獨一無二的默認的提供程序使用不區分大小寫的用戶名用戶可以屬於一個或多個組
  
  為列出和編輯屬於某個安全域的所有組需要從Administration Console選擇該安全域然後選擇Groups節點還可以在這裡創建一個新組組的Membership選項卡可能會誤導人因為它並不允許查看組的成員要查看一個用戶是不是組的成員必須選擇該用戶然後查看它的Groups選項卡WebLogic允許向其他現有的組添加組而Membership選項卡列出了所選中的組中包含的所有子組還可以使用這個選項卡給當前組添加另一個組
  
  對於安全配置組成員資格具有兩點重要的含義假定用戶在域中定義了兩個組A和B而組B是組A的一個成員這意味著
  
  屬於組B的每個用戶同時也屬於組A
  
  如果指派一個角色或策略給組A就是同時向組A的所有成員和組B的所有成員指定了相同的角色或策略
  
  當查看用戶的Groups選項卡時Administration Console僅列出該用戶直屬的組所以如果一個用戶屬於組BAdministration Console在Groups選項卡下只會列出組B即使該用戶實際上既屬於組A也屬於組B
  
  當使用Configuration Wizard創建一個新域時以下組將會自動創建並隨時可用AdministratorsDeployersOperators和Monitors一開始System用戶是惟一被創建的用戶它也是域中Administrators組的惟一成員
  
  記住組只不過簡化了管理的任務如果一個用戶是某個組的成員它不會自動獲得任何特殊的權限只有當組(直接地或通過一個角色)參與策略語句時它才會繼承訪問權限例如最初的System用戶帳號獲得了Administrative訪問權限僅僅是因為它是Administrators組的成員而這個組又是(全局的)Admin角色的一個成員同時有一條可用的策略語句把訪問域中各個區域(area)的權限授予Admin角色
  
  有兩個組在Groups頁面上沒有列出但是它們自動對於安全域可用
  
  users
  
  該組代表所有通過身份驗證的用戶的集合任何成功通過身份驗證的用戶都是users組的成員
  
  everyone
  
  這個組代表所有WebLogic用戶的集合包括匿名用戶任何用戶無論是已驗證的還是匿名的都是everyone組的一個成員
  
  這些組為建立默認的訪問控制提供了一種便捷的方式例如通過策略語句用戶是everyone組的成員資源可以被所有用戶訪問另外通過對某項資源定義如下策略用戶是users組的成員可以把訪問權限定為僅針對已驗證的用戶還可以編程式地檢查服務器端的組成員資格下面的例子用於檢查當前用戶是users組還是everyone組的成員
  
  /** returns false if executed without any security context */
  
  weblogicsecuritySubjectUtilsisUserInGroup(
  
  weblogicsecuritySecuritygetCurrentSubject( )users);/** returns true regardless of whether the user authenticates */
  
  weblogicsecuritySubjectUtilsisUserInGroup(
  
  weblogicsecuritySecuritygetCurrentSubject( )everyone);
  
  保護用戶帳號
  
  WebLogic提供一種用戶封鎖功能以防止用戶帳號的濫用當一個用戶嘗試登錄失敗的次數達到一個阙值時該用戶就會被封鎖當這種情況發生時該用戶將被封鎖一段時間(時間長短可以配置)或者直到管理員解鎖該用戶為止在這期間該用戶被禁止使用這些證書訪問服務器為配置用戶封鎖需要選擇Administration Console左側窗格中的Security/Realms節點下的安全域然後可以使用User Lockout選項卡來調整封鎖功能並查看封鎖統計信息
  
  表列出了User Lockout選項卡下可用的各種配置選項默認情況下這些設置被配置為最高安全性
  
  表 配置用戶封鎖
  
 

  當一個用戶被封鎖時用戶列表(位於Users節點下)中的Locked欄下就會出現一個Details鏈接如果選擇列表中某個用戶的這個鏈接就可以查看該用戶登錄嘗試失敗的次數以及最後一次失敗的登錄嘗試的時間還可以選擇Unlock選項手動重新激活用戶的帳戶
  
  角色
  
  和組不同角色代表一個動態的用戶集合角色成員資格可以通過以下規則進行定義
  
  用戶名
  
  可以指定多個用戶名如果通過身份驗證的用戶與列表中的一個名稱相匹配而且它滿足其他所有規則它將自動成為該角色的成員
  
  組名
  
  可以指定多個組名如果通過身份驗證的用戶是列表中某個組的成員而且它滿足其他所有規則它將自動成為該角色的成員
  
  訪問時間
  
  可以定義多個允許用戶進行訪問的時間段如果用戶試圖在一個指定的時間段之內訪問資源而且滿足其他所有規則它將自動成為該角色的成員
  
  通過使用邏輯AND(與)和OR(或)關系可以以各種方式組合這些規則例如可以基於如下規則創建RoleA用戶屬於組UKSeller而且訪問時間在上午:到下午:之間那麼任何試圖在這段時間內訪問資源同時又是UKSeller組成員的用戶就會成為RoleA的成員或者可以基於如下規則創建RoleB用戶屬於組UKSeller或者訪問時間在上午:到下午:之間在這種情況下組UKSeller的每個成員都將始終屬於這個角色同時每個在上午:到下午:之間訪問資源的用戶也將成為該角色的一個成員而不管它屬於哪個組當用戶嘗試訪問受(根據該角色定義的)策略語句保護的資源時要在運行時對該角色的成員資格條件進行評估因此成員資格條件有助於評估在某個時刻用戶是否屬於該角色
  
  通常WebLogic默認的Role Mapping Provider負責管理與在某個安全域中定義的所有角色相關的信息事實上可以定義兩類角色全局的(scoped)和局部的(scoped)角色
  
  全局角色
  
  全局角色可用於安全域中的所有資源當創建一個新域時就會自動創建一組默認的全局角色它用於授權對各種操作的訪問這些預定義的全局角色與默認的安全策略(對WebLogic域執行factoryset安全配置)相關聯
  
  Admin
  
  屬於該角色的用戶對域的各個區域具有完全訪問權這包括以下能力查看和編輯域配置啟動和停止服務器部署應用程序(EJBJMS factoryweb應用程序)等等任何屬於Administrators組的用戶將自動繼承Admin角色也就是說Admin角色的成員資格條件是用戶必須屬於Administrators組
  
  Deployer
  
  屬於該角色的用戶可以查看域配置查看和編輯部署描述符部署應用程序和EJB以及啟動和關閉類JEE連接器和web服務組件Deployer角色的成員資格條件是用戶必須屬於Deployers組
  
  Operator
  
  屬於該角色的用戶可以查看服務器配置還可以啟動停止和重新開始服務器實例Operator角色的成員資格條件是用戶必須屬於Operators組
  
  Monitor
  
  屬於該角色的用戶只可以查看服務器的配置Monitor角色的成員資格條件是用戶必須屬於Monitors組
  
  為創建或修改現有的全局角色需要從Administration Console左側窗格中選擇安全域然後選擇Global Roles節點
  
  WebLogic還提供一個稱為anonymous的全局角色它的成員資格被定義為包括everyone組中的所有用戶即使anonymous角色沒有出現在Administration Console中所列出的角色之中仍然可以使用它來定義針對資源的策略
  
  局部角色
  
  大多數角色是局部的這是指它們適用於特定的資源或JNDI樹的分支全局角色和局部角色的差別在於前者獨立於任何資源並且可以通過Administration Console進行集中管理而後者是跨各種資源分布的用戶必須選擇一種特定的資源以便查看相關的局部角色不管實際資源是什麼用於創建局部角色的底層principle是相同的從Administration Console的左側窗格中定位資源然後右擊並選擇Define Scoped Role在某些情況下在更詳細的方面中可以定義局部角色及其兄弟局部策略例如在web應用程序中可以為EJB(基於每個方法)web服務(基於每項操作)和web資源(基於某種HTTP方法類型(POSTGETHEAD等等))都定義一個局部角色和策略現在讓我們看一看如何為特定的資源創建局部角色以及在此配置中需要采取的一些預防措施
  
  連接池和多池
  
  JDBC資源位於Services/JDBC子樹下可以右擊選定的資源(如連接池)然後選擇Define Scoped Role來為資源定義一個角色還可以刪除或修改以前指派的角色
  
  JDBC角色是分級的如果右擊JDBC/Connection Pools節點可以按照同樣的過程創建一個適用於所有連接池的局部角色
  
  JNDI分支
  
  可以為服務器的JNDI樹的特定的節點或分支指派一個角色從Administ
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27620.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.