首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

IBM InfoSphere MDM Server 事務授權實戰:基於 LDAP 的細粒度存取控制

     編輯:DB2 教學

前言:從認證到授權的自然延伸

InfoSphere MDM Server 安全模組提供事務層級授權,決定「通過認證的用戶/群組是否允許呼叫特定事務」。預設關閉,需啟用並配置 Provider 類別。本文聚焦內建 LDAP Provider的完整部署流程,並示範如何自訂 Provider。

架構概覽:兩種內建實現、一條自訂介面

事務授權整體流程圖 三種 Provider 實現選項
  • Security Manager 介面:整合 MDM 內部安全管理
  • LdapTransactionAuthorizationProvider:對接企業 LDAP 目錄(本文重點)
  • 自訂 Provider:實作 com.dwl.base.security.AuthorizationProvider 介面

事務上下文:DWLControl 物件

每筆事務攜帶 DWLControl,含用戶與群組資訊:

<DWLControl>
  <requesterName>myUserName</requesterName>
  <userRole>myGroup1</userRole>
  <userRole>myGroup2</userRole>
</DWLControl>
  • requesterName:單一用戶名(必填)
  • userRole:零或多個群組名(選填)

Provider 依此判斷授權。

LDAP Provider 部署四步驟

步驟 1:設計授權需求(業務驅動)

案例:NewBusiness 部門三群組、三事務:

事務DirectSalesCSRsDataStewards
addPerson允許允許允許
getPerson拒絕允許允許
updatePerson拒絕拒絕允許

用戶對應:Fred→DirectSales、Sue→CSRs、Thomas→DataStewards。

步驟 2:在 LDAP 建立目錄結構

使用 Tivoli Directory Server 6.1,建立後綴 o=NewBusiness,c=us,匯入 LDIF 定義用戶、群組、事務授權關係。

建立 LDAP 後綴 匯入 LDIF 檔案 驗證目錄條目

目錄設計關鍵:以 groupOfNames 物件類別代表事務,member 屬性關聯用戶(uid=...)或群組(cn=...)。

步驟 3:配置 LdapTransactionAuthorizationProvider

透過 Configuration and Management 設定:

配置路徑值說明
/IBM/DWLCommonServices/Security/enabledtrue啟用事務授權
/IBM/DWLCommonServices/Security/transaction_authorization_provider_class_name_1com.dwl.base.security.provider.LdapTransactionAuthorizationProvider指定 Provider 類
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/jndiFactoryClasscom.sun.jndi.ldap.LdapCtxFactoryJNDI Factory
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/jndiProviderUrlldap://localhost:389LDAP Server URL
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/baseo=NewBusiness,c=us搜尋基底 DN
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/Filter/user(&(objectClass=groupOfNames)(cn=%t)(member=uid=%u,*))用戶授權過濾器,%t=事務、%u=用戶
/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/Filter/group(&(objectClass=groupOfNames)(cn=%t)(member=cn=%g,*))群組授權過濾器,%g=群組

運行時解析範例:Fred 呼叫 addPerson → 產生過濾器 (&(objectClass=groupOfNames)(cn=addPerson)(member=uid=Fred,*)) 查詢 LDAP。

步驟 4:驗證與錯誤處理

未授權用戶收到標準錯誤回應:

<TxResult>
  <ResultCode>FATAL</ResultCode>
  <DWLError>
    <ComponentType>108</ComponentType>
    <ErrorMessage>Security violation occurred.</ErrorMessage>
    <ErrorType>DIERR</ErrorType>
    <ReasonCode>4934</ReasonCode>
  </DWLError>
</TxResult>

附件 RequestResponseSamples.zip 提供完整請求/回應範例供測試。

自訂 Provider 開發指南

實作 AuthorizationProvider 介面唯一方法:

public boolean authorize(AuthenticationData authData, String resourceName)
    throws SecurityProviderException;
  • authData:從 DWLControl 解析出的用戶/群組資訊
  • resourceName:事務名稱
  • 回傳 true 表示授權通過

開發完成後,同樣在 Configuration 中註冊類名並啟用安全即可。

總結:靈活授權的關鍵決策點

  • 企業已有 LDAP 基礎設施 → 直接用 LdapTransactionAuthorizationProvider
  • 需整合非 LDAP 系統(資料庫表、Web Service、ABAC 引擎)→ 自訂 Provider
  • 過濾器設計(%t/%u/%g)決定授權粒度與效能
  • 錯誤代碼 4934 為標準「授權失敗」信號,前端可據此友善提示

透過「業務矩陣→目錄結構→Provider 配置」三步走,快速落地事務級授權,滿足合規與最小權限原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved