首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JBoss 4 + EJB 3 環境下整合 JAAS 實現認證與授權

     編輯:Java 相關知識

JBoss 4 內建 JAAS(Java Authentication and Authorization Service)支援,搭配 EJB 3 的註解式宣告,能快速完成「誰能存取」與「能做什麼」的安全控管。本文拆解認證與授權兩大面向,並給出關鍵程式碼片段。

認證

1. 宣告安全域

@SecurityDomain("other")
public class CalculatorBean implements Calculator { ... }

對應 users.properties 存放帳密:

kabir=validpassword

2. 程式化驗證

import org.jboss.security.SecurityAssociation;
import org.jboss.security.SimplePrincipal;

// 設定主體
SecurityAssociation.setPrincipal(new SimplePrincipal("kabir"));
// 設定憑證(錯誤密碼示範)
SecurityAssociation.setCredential("invalidpassword".toCharArray());

驗證失敗會拋出例外,攔截處理即可回傳 401/403。

授權

1. 方法層級角色宣告

@MethodPermissions({"teacher"})
public int divide(int x, int y) {
    return x / y;
}

2. 角色對應

roles.properties 定義使用者角色:

kabir=student

3. 執行期檢查

呼叫 divide() 時,容器比對 requiredRoles=[teacher] 與 principalRoles=[student],不符則拋出:

Insufficient method permissions, principal=kabir, requiredRoles=[teacher], principalRoles=[student]

實務補充

  • 外部化設定:生產環境建議改用資料庫或 LDAP 實作 LoginModule,避免屬性檔維護困難。
  • 角色繼承:可在 jboss.xml 定義 role-mapping 實現角色分組。
  • EJB 3.1+:若升級至新版規格,可改用 @RolesAllowed、@PermitAll、@DenyAll 標準註解,提升可移植性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved