![[z/OS]](../images/ngzos.gif)
z/OS 安全性中的分布式标识过滤器配置
必须先在 WebSphere® Application Server 的 z/OS® 安全性产品中配置分布式标识过滤器,然后才能将分布式标识映射至系统授权工具 (SAF) 用户。
SAF 类 RACMAP 中的分布式标识过滤器由分布式用户名和分布式用户名的域名组成。可以配置这些过滤器以将许多分布式标识映射至一个 SAF 用户,也可以进行一对一映射。
RACMAP ID(<SAFUser>) MAP USERDIDFILTER(NAME('<distributedUserId>'))
REGISTRY(NAME('<distributedRealmName>')) WITHLABEL('<someLabel>')
<SAFUser> 元素是 z/OS 安全性产品中的 SAF 用户,<distributedUserId> 是分布式标识,<distributedRealmName> 是分布式标识的域名,<someLabel> 是用于描述此分布式标识过滤器的文本字段。
SETROPTS CLASSACT(IDIDMAP) RACLIST(IDIDMAP)
SETROPTS RACLIST(IDIDMAP) REFRESH
将分布式用户映射至 SAF 用户:
如果您配置了非本地的操作系统注册表,那么可以将分布式用户(例如轻量级目录访问协议 (LDAP) 用户)映射至 SAF 用户。WebSphere Application Server 在映射至 SAF 用户时使用的分布式用户名是 WSCredential.getUniqueSecurityName() API 返回的值。此方法在应用于已配置的用户注册表时将返回唯一用户名。对于 LDAP,此值是完整专有名称 (DN)。对于定制配置,此值是定制注册表中的 getUniqueUserId() API 返回的任何内容。对于联合存储库,此值是虚拟成员管理器中的 uniqueName 属性。
WebSphere Application Server 使用的分布式领域名由 WSCredential.getRealmName() API 确定。返回的领域名取决于正在配置的用户注册表。对于 LDAP,领域名是 ldapHostName:ldapPortNumber。对于定制用户注册表,领域名是您已配置 getRealm() 方法以在您的实现中返回的任何内容。对于联合存储库,领域名是您在联合存储库面板的领域名字段中指定的领域。
RACMAP ID(USER1) MAP USERDIDFILTER(NAME('CN=LDAPUser1,o=ibm,c=us'))
REGISTRY(NAME('ccwin12.austin.ibm.com:389'))
WITHLABEL('Mapping LDAP LDAPUser1 to USER1')
RACMAP ID(USER3) MAP USERDIDFILTER(NAME('CustomUser3'))
REGISTRY(NAME('customRealm')) WITHLABEL('Mapping custom CustomUser3 to USER3')
RACMAP ID(USER5) MAP USERDIDFILTER(NAME('uid=wimUser5,o=defaultWIMFileBasedRealm
')) REGISTRY(NAME('defaultWIMFileBasedRealm')) WITHLABEL('Mapping custom wimUser5 to USER5')
将 Kerberos 主体映射至 SAF 用户:
如果您在 z/OS 操作系统中使用 Kerberos 认证机制配置了本地操作系统注册表,那么您可能要将 Kerberos 用户映射至 SAF 用户。在这种情况下,分布式标识是 Kerberos 主体名称。分布式领域名是 KDC 的 Kerberos 领域名。
kerberosUser@KRB390.IBM.COM to the SAF user WSADMIN:
RACMAP ID(WSADMIN) MAP USERDIDFILTER(NAME('kerberosUser'))
REGISTRY(NAME('KRB390.IBM.COM')) WITHLABEL('Mapping Kerberos kerberosUser to WSADMIN')
将多个分布式标识映射至一个 SAF 用户:
RACMAP ID(ACCT) MAP USERDIDFILTER(NAME('*'))
REGISTRY(NAME('accountingUnit.acme.ibm.com:389'))
WITHLABEL('Mapping accounting users to ACCT')
RACMAP ID(ACCT2) MAP USERDIDFILTER(NAME('O=ibm,C=us'))
REGISTRY(NAME('accountingUnit.acme.ibm.com:389'))
WITHLABEL('Mapping US accounting users to ACCT2')
将证书和专有名称映射至 SAF 用户
RACMAP ID(ACCT3) MAP USERDIDFILTER(NAME('O=ibm,C=us'))
REGISTRY(NAME('localOSRealm'))
WITHLABEL('Mapping certificate or distinguished names to ACCT3')
创建缺省分布式标识过滤器:
您可能要定义一个缺省过滤器,以便将使用任何其他过滤器找不到的所有分布式标识映射至具有 RESTRICTED 属性的 SAF 用户。
RACMAP ID(WSGUEST) MAP USERDIDFILTER(NAME('*'))
REGISTRY(NAME('*')) WITHLABEL('The default filter')
激活已认证的用户的 RACMAP 过滤器更改:
当用户通过注册表进行认证时,系统还会将该用户添加到认证高速缓存中。在 z/OS 安全性产品中对 RACMAP 过滤器所作的任何更改将在从认证高速缓存中移除此用户后才生效。
如果您希望这些更改立即生效,请对要更新的服务器调用 SecurityAdmin Mbean。可以调用 purgeUserFromAuthCache 操作来移除一个特定用户,也可以调用 clearAuthCache 操作来移除认证高速缓存中的所有用户。重新启动服务器后也会清除认证高速缓存。
请参阅 SecurityAdmin MBean 定义表,以了解关于该 Mbean 及其操作的详细信息。
例如,分布式标识 LDAPUser1 未映射至 SAF 用户,而尝试登录受角色保护的 servlet。因为用户标识和密码有效,所以将认证该用户并将其添加到认证高速缓存。但是,因为 LDAPUser1 未映射至 SAF 用户,所以将使用未经认证的缺省标识 WSGUEST 进行授权。
因为 WSGUEST 无权使用 servlet 角色,所以 LDAPUser1 无法访问该 servlet。然后,z/OS 安全性管理员将定义 RACMAP 过滤器以将 LDAPUser1 映射至 SAF 用户 USER1。在将此标识从认证高速缓存中移除之前,LDAPUser1 仍然无法访问该 servlet。
有关 RACMAP 命令的更多信息,请参阅 z/OS Security Server RACF® Command Language Reference。