WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院数据库DB2 理解 IBM InfoSphere MDM Server 安全性 3 阅读

理解 IBM InfoSphere MDM Server 安全性 3

 2009-01-25 16:38:35 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄闁圭⒈鍋嗛惀顏囶樄闁哄本娲樼换婵婄疀閺囩姷鐛ラ梻浣哄帶婢瑰﹥绂嶅⿰鍫氣偓鏃堝礃椤忎礁浜鹃柨婵嗛婢ь喖霉閻樻瑥瀚粻楣冩煕椤愩倕鏋庨柣蹇嬪劜閵囧嫰寮村Ο鍝勫Е濡炪們鍨洪悷鈺呭箖閳╁啯鍎熼柕鍥у簻閹凤拷
核心提示: 简介InfoSphere MDM Server 安全模块的特点之一是基于用户或用户所属的组提供事务授权,这种授权决定是否允许请求用户使用一个事务,理解 IBM InfoSphere MDM Server 安全性 3,这被称作 InfoSphere MDM Server 安全模块的事务授权,默认情况下,还演示了

简介

InfoSphere MDM Server 安全模块的特点之一是基于用户或用户所属的组提供事务授权。这种授权决定是否允许请求用户使用一个事务。这被称作 InfoSphere MDM Server 安全模块的事务授权。默认情况下,事务授权是禁用的。

为了使用事务授权,可以将 InfoSphere MDM Server 配置为使用一个事务授权 provider 类。这个 provider 类与管理事务授权的系统进行交互。

图 1. 事务授权

理解 IBM InfoSphere MDM Server 安全性 3

事务授权 provider 类必须实现 com.dwl.base.security.AuthorizationProvider 接口。InfoSphere MDM Server 开箱即用地提供了一个作为 InfoSphere MDM Server Security Manager 接口的事务授权 provider 类,以及一个作为 Lightweight Directory Access Protocol(LDAP)服务器接口的事务授权 provider 类。您还可以实现自己的 provider 类。

图 2. 事务授权实现选项

理解 IBM InfoSphere MDM Server 安全性 3

本文将详细描述如何配置 LdapTransactionAuthorizationProvider 类,以及如何在 InfoSphere MDM Server 上启用事务授权。这个 provider 类使用 LDAP 服务器来管理事务授权。本文的示例 provider 类使用一个简单的目录结构来管理用户、组和事务授权。

前提

本文使用 Tivoli Directory Server version 6.1 作为 LDAP 服务器。本文假设您拥有 LDAP 方面的基础知识,并拥有使用 Tivoli Directory Server 的经验。

本文包含提交到 InfoSphere MDM Server version 8.0 的事务。您应该知道如何:

将事务提交到 InfoSphere MDM Server

使用 Configuration and Management 组件配置 InfoSphere MDM Server

在 InfoSphere MDM Server 事务中指定用户和组

对于任何 InfoSphere MDM Server 事务,都可以在事务的 DWLControl 对象中指定用户或用户所属的组。假设成功认证用户或组,事务授权将检查用户或组是否被授权访问请求的事务。

清单 1 是 DWLControl 对象的 XML 表示的一个例子:

清单 1. DWControl 对象的 XML 表示

<DWLControl>
 <requesterName>myUserName</requesterName>
 <userRole>myGroup1</userRole>
 <userRole>myGroup2</userRole>
</DWLControl>

<requesterName> 元素对应于用户,<userRole> 元素对应于用户所属的组。对于每个事务,DWLControl 对象必须包含一个用户名,另外还可以包含 0 个或多个组名。事务授权 provider 通过 com.dwl.base.security.AuthorizationProvider 接口检查用户名和组名,以确保对事务的访问经过授权。

LDAP 事务授权 provider

通常,可以选择使用 LDAP 事务授权 provider,因为:

您的组织已经有 LDAP 服务器基础设施。

LDAP 服务器上已经设置了您的组织的用户和组。在这种情况下,只需添加想要与用户和组相关联的 InfoSphere MDM Server 事务。

com.dwl.base.security.provider.LdapTransactionAuthorizationProvider 类就是使用 LDAP 服务器实现事务授权的一种实现。它使用一个简单的目录结构来管理用户、组和事务名称之间的关系。当然,您也可以实现自己的 LDAP 事务授权 provider 类,只要这个类实现 com.dwl.base.security.AuthorizationProvider 接口就行了。

使用来自 InfoSphere MDM Server 的 LDAP 事务授权 provider

InfoSphere MDM Server 提供了一个 LdapTransactionAuthorizationProvider 类,您可以在 LDAP 服务器上使用这个类。使用这个类的步骤如下所示:

设计授权需求

在 LDAP 服务器上实现授权需求

配置 LdapTransactionAuthorizationProvider 类,使之成为 LDAP 服务器的接口

下面的小节更详细地描述这些步骤。

设计授权需求

授权需求应该以业务需求为基础。为了演示如何使用 LdapTransactionAuthorizationProvider 类,现在假设您的 NewBusiness 部门有 3 个组:DirectSales、CSRs 和 DataStewards。NewBusiness 部门决定授予这 3 个部门访问以下事务的权限。

事务
addPersonDirectSales、CSRs、DataStewards
getPersonCSRs、DataStewards
updatePersonDataStewards

属于这 3 个组当中任何一个组的用户都可以使用 addPerson 事务添加一个客户。考虑到客户的隐私,只有属于 CSRs 或 DataStewards 组的用户可以使用 getPerson 事务查看客户信息。考虑到数据的完整性,只有属于 DataStewards 组的用户可以使用 updatePerson 事务更新客户信息。

假设在 NewBusiness 部门中,Fred 是 DirectSales 组的用户,Sue 是 CSRs 组的用户,而 Thomas 是 DataStewards 组的用户。

根据上述业务需要,可以设置 LDAP 服务器,使之管理以下业务授权数据:

表 1. 用户/组的事务授权

addPersongetPersonupdatePerson
DirectSales (Fred)允许不允许不允许
CSRs (Sue)允许允许不允许
DataStewards (Thomas)允许允许允许

本文提供了一个 MDM_LADP.ldif 文件,其中显示了如何在 LDAP 服务器上设置这些用户、组和事务。您可以查看该文件,了解更多的细节(参见 下载)。

配置 Tivoli Directory Server

根据 MDM_LADP.ldif 文件,假设目录从 NewBusiness 部门开始。您需要在 Tivoli Directory Server 实例中创建以下后缀。如果使用 Tivoli Directory Server Instance Administration Tool,可以像下面这样创建后缀 o=NewBusiness,c=us:

图 3. 添加 o=NewBusiness,c=us 后缀

理解 IBM InfoSphere MDM Server 安全性 3

为事务授权创建目录结构

创建后缀之后,可以在 Tivoli Directory Server 实例上创建 表 1 所述的目录结构。

如果使用 Tivoli Directory Server Administration Tool,那么可以通过导入 MDM_LADP.ldif 文件来创建目录结构(参见 下载)。

图 4. 导入 LDIF 文件

理解 IBM InfoSphere MDM Server 安全性 3

添加后缀和导入数据之后,启动 Tivoli Directory Server 实例。如果想验证数据是否被成功地导入,还可以启动 Tivoli Directory Server Web Admin。应该可以看到,在 o=NewBusiness,c=us 后缀下有 3 个条目。要了解如何启动实例和 Web Admin,请参阅 Tivoli Directory Server 文档。

图 5. 目录条目

理解 IBM InfoSphere MDM Server 安全性 3

配置 LDAP 事务授权 provider 类

在 Tivoli Directory Server 实例上装载好数据后,便可以配置 InfoSphere MDM Server LdapTransactionAuthorizationProvider 类。这可以通过配置 InfoSphere MDM Server Configuration and Management 设置完成。这些设置包括:

/IBM/DWLCommonServices/Security/enabled

该设置决定是否为事务授权启用安全性。

将该设置设为 true。

/IBM/DWLCommonServices/Security/transaction_authorization_provider_class_name_1

该设置指定事务授权 provider 类。

将该设置设为 com.dwl.base.security.provider.LdapTransactionAuthorizationProvider。

/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/jndiFactoryClass

该设置指定用于在 LDAP 服务器上进行查找的 JNDI factory 类。

可以使用默认的设置 com.sun.jndi.ldap.LdapCtxFactory。

/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/jndiProviderUrl

该设置指定指向 LDAP 服务器的 URL。

假设在本机的端口 389 上配置 Tivoli Directory Server 实例,那么将该设置设为 ldap://localhost:389。

/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/base

该设置指定从其中开始搜索的基本对象。

在 图 3 中,我们从 o=NewBusiness,c=us suffix 开始设置用户和组。因此,将该设置设为 o=NewBusiness,c=us。

/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/Filter/user

该设置指定应用于 LDAP 服务器的搜索过滤器,用于搜索用户被授权访问的事务。LdapTransactionAuthorizationProvider 类在运行时具体化 3 个标记,以替换实际的值。这 3 个标记是:

%t,替换事务名

%u,替换用户名

%g,替换组名

因此,根据 表 1 中实现的目录结构,将该设置设为 (&(objectClass=groupOfNames)(cn=%t)(member=uid=%u,*))。

在运行时,如果用户 Fred 请求 addPerson 事务,则构造一个搜索字符串 (&(objectClass=groupOfNames)(cn=addPerson)(member=uid=Fred,*)),以便对 LDAP 服务器进行搜索。

/IBM/DWLCommonServices/LdapSecurityProvider/LdapSearch/Filter/group

该设置指定应用于 LDAP 服务器的搜索过滤器,用于搜索组被授权访问的事务。同样,LdapTransactionAuthorizationProvider 类具体化 3 个标记 %t、%u 和 %g。

因此,根据 表 1 中实现的目录结构,将该设置设为 (&(objectClass=groupOfNames)(cn=%t)(member=cn=%g,*))。

在运行时,如果组 CSRs 请求 addPerson 事务,则构造一个查询字符串 (&(objectClass=groupOfNames)(cn=addPerson)(member=cn=CSRs,*)),以便对 LDAP 服务器进行搜索。

当配置了这些设置时,InfoSphere MDM Server 分别从事务的 DWLControl 对象中的 <requesterName> 和 <userRole> 值获取用户和组信息,以确定是否授权某个用户使用该事务。如果用户没有被授权,则在响应中返回以下错误消息:

清单 2. 对未被授权的用户返回的消息

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

本文附带的 RequestResponseSamples.zip 文件包含请求和响应样例作为测试数据(参见 下载)。

创建自己的事务授权 provider

您可以创建自己的事务授权 provider。为此,需要创建一个实现 com.dwl.base.security.AuthorizationProvider 接口的类。该接口包括以下方法:

public boolean authorize(AuthenticationData authData, String resourceName)
             throws SecurityProviderException;

AuthenticationData 参数是在将事务提交给 InfoSphere MDM Server 时从 DWLControl 对象创建的。AuthenticationData 参数包含来自 DWLControl 对象的用户和组信息。String 参数是资源名,您可以决定是否授权用户使用它。在这里,它就是事务名。因此,在您的 provider 类中,需要使用这 2 个参数来确定是否允许使用授权。如果授权被许可,该方法则返回 true。

创建类之后,可以在 InfoSphere MDM Server 上通过设置以下 Configuration and Management 设置对它进行配置:

/IBM/DWLCommonServices/Security/enabled

将该设置设为 true。

/IBM/DWLCommonServices/Security/transaction_authorization_provider_class_name_1

将该设置设为 provider 类的类名。

结束语

本文展示了在 InfoSphere MDM Server 上实现事务授权的一些选项。此外,还演示了设置 InfoSphere MDM Server 提供的 LdapTransactionAuthorizationProvider 类的一些步骤。InfoSphere MDM Server 提供一个接口,使您可以灵活地实现自己的事务授权 provider 类。

Tags:理解 IBM InfoSphere

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接