|
WebLogic Server 包含多个身份验证安全提供程序。其中大多数提供程序的工作原理很相似:在给定用户名和密码凭据对的情况下,提供程序将尝试在提供程序的数据存储中查找相应的用户。这些身份验证提供程序的主要区别在于所使用的数据存储不同:是使用多个可用的 LDAP 服务器之一、一个 SQL 数据库还是其他的数据存储。除了这些基于用户名/密码的安全提供程序外,WebLogic Server 还包含标识声明身份验证提供程序,这些提供程序将证书或安全标记(而不是用户名/密码对)用作凭据。
以下部分描述如何配置 WebLogic Server 提供的身份验证安全提供程序。
选择身份验证提供程序
身份验证是证明或验证用户和系统进程的标识的过程。身份验证还包括记忆、传输标识信息,以及在需要时将这些信息提供给系统的各种组件。
WebLogic Server 安全体系结构支持以下身份验证:直接在 WebLogic Server 中进行基于证书的身份验证;通过外部 Web 服务器代理进行基于 HTTP 证书的身份验证;基于周边的身份验证(Web 服务器、防火墙和 VPN);基于多种安全标记类型和协议的身份验证。
WebLogic Server 提供以下类型的身份验证提供程序:
WebLogic 身份验证提供程序可访问 WebLogic Server 的嵌入式 LDAP 服务器中的用户和组信息。
LDAP 身份验证提供程序可访问外部 LDAP 存储。使用 LDAP 身份验证提供程序可访问任何 LDAP 服务器。WebLogic Server 提供已经为 Open LDAP、Sun iPlanet、Microsoft Active Directory 和 Novell NDS LDAP 服务器配置的 LDAP 身份验证提供程序。
RDBMS 身份验证提供程序可访问外部关系数据库。WebLogic Server 提供了三种 RDBMS 身份验证提供程序:SQL 验证器、只读 SQL 验证器以及自定义 RDBMS 验证器。
WebLogic 标识声明提供程序可验证 X.509 和 IIOP-CSIv2 标记,还可以选择使用用户名映射器将该标记映射到 WebLogic Server 安全领域中的用户。
SAML 身份验证提供程序基于安全声明标记语言 1.1 (Security Assertion Markup Language,简称 SAML)声明对用户进行身份验证。
协商标识声明提供程序使用简单和受保护协商(Simple and Protected Negotiate,简称 SPNEGO)标记来获取 Kerberos 标记,并在验证 Kerberos 标记后将该 Kerberos 标记映射到 WebLogic 用户。
SAML 标识声明提供程序充当 SAML 安全声明的使用者。它可以使 WebLogic Server 充当 SAML 目标站点并支持使用 SAML 进行单一登录。
另外,您还可以使用:
自定义(非 WebLogic)身份验证提供程序,它可提供多种不同类型的身份验证技术。
自定义(非 WebLogic)标识声明提供程序,它支持多种不同类型的标记。
使用多个身份验证提供程序
每个安全领域都必须至少配置一个身份验证提供程序。WebLogic 安全框架支持使用多个身份验证提供程序(因而会有多个 LoginModule)进行多方身份验证。因此,在一个安全领域中可以使用多个身份验证提供程序和多种身份验证提供程序。例如,如果需要同时使用 Retina 扫描和基于用户名/密码的身份验证形式来访问系统,则应配置两个身份验证提供程序。
如何配置多个身份验证提供程序可影响身份验证过程的总体结果。通过为每个身份验证提供程序配置 JAAS 控制标志,可以设置身份验证提供程序之间的登录依赖关系并允许在提供程序之间进行单一登录。请参阅设置 JAAS 控制标志选项。
身份验证提供程序的调用顺序与它们在安全领域中的配置顺序相同。因此,在配置身份验证提供程序时应谨慎处理。可以使用 WebLogic 管理控制台对经过配置的身份验证提供程序重新排序,以此来更改它们的调用顺序。请参阅更改身份验证提供程序的顺序。
设置 JAAS 控制标志选项
在配置多个身份验证提供程序时,通过对每个提供程序都使用 JAAS 控制标志,可以控制身份验证提供程序在登录序列中的使用方式。可以在 WebLogic 管理控制台中设置 JAAS 控制标志。请参阅“管理控制台联机帮助”中的设置 JAAS 控制标志。也可以使用 WebLogic 脚本工具或 Java 管理扩展(Java Management Extensions,简称 JMX)API 来设置身份验证提供程序的 JAAS 控制标志。
JAAS 控制标志的值包括:
REQUIRED - 始终调用身份验证提供程序,并且用户必须始终通过该提供程序的身份验证测试。无论身份验证成功与否,都将对列出的后续提供程序继续执行身份验证。
REQUISITE - 用户需要通过身份验证提供程序的身份验证测试。如果用户通过此身份验证提供程序的身份验证测试,则会执行后续提供程序,但可能会失败(将 JAAS 控制标志设置为 REQUIRED 的身份验证提供程序除外)。
SUFFICIENT - 用户不需要通过身份验证提供程序的身份验证测试。如果身份验证成功,则不会执行后续身份验证提供程序。如果身份验证失败,身份验证将继续执行提供程序列表。
OPTIONAL - 允许用户通过此身份验证提供程序的身份验证测试,也允许用户在这一过程中失败。但是,如果在安全领域中配置的所有身份验证提供程序都将 JAAS 控制标志设置为 OPTIONAL,则用户必须通过已配置提供程序之一的身份验证测试。
默认情况下,在向现有安全领域中添加其他身份验证提供程序时,会将控制标志设置为 OPTIONAL。如有必要,请更改控制标志的设置以及身份验证提供程序的顺序,以便每个身份验证提供程序都能在身份验证序列中正常工作。
更改身份验证提供程序的顺序
WebLogic Server 对多个身份验证提供程序的调用顺序可影响身份验证过程的总体结果。身份验证提供程序表将按调用顺序列出身份验证提供程序。默认情况下,身份验证提供程序将按照其配置顺序进行调用。可以使用管理控制台更改身份验证提供程序的顺序。在管理控制台中,使用“安全领域: 提供程序: 身份验证”页上的“重新排序”按钮可以更改 WebLogic Server 对身份验证提供程序的调用顺序以及这些提供程序在控制台中的列出顺序。
请参阅“管理控制台联机帮助”中的重新排序身份验证提供程序。
配置 WebLogic 身份验证提供程序
WebLogic 身份验证提供程序使用 WebLogic Server 的嵌入式 LDAP 服务器来存储用户和组成员资格信息。通过此提供程序,可以编辑、列出和管理用户和组成员资格。默认情况下,已定义了 WebLogic 身份验证提供程序的大多数配置选项。只有在创建新的安全领域时,才需要配置 WebLogic 身份验证提供程序。但是,还应当注意以下几点:
WebLogic 身份验证提供程序是在名为 DefaultAuthenticator 的默认安全领域中进行配置的。
WebLogic 身份验证提供程序中的用户名和组名区分大小写。
应确保所有用户名都是唯一的。
通过使用“配置: 提供程序特定”页上的“最小密码长度”选项,可以指定为存储在嵌入式 LDAP 服务器中的用户所定义的密码的长度。
如果要使用多个身份验证提供程序,请设置 JAAS 控制标志以确定身份验证过程中 WebLogic 身份验证提供程序的使用方式。请参阅使用多个身份验证提供程序。
配置 LDAP 身份验证提供程序
WebLogic Server 包含以下 LDAP 身份验证提供程序:
iPlanet 身份验证提供程序
Active Directory 身份验证提供程序
Open LDAP 身份验证提供程序
Novell 身份验证提供程序
一般 LDAP 身份验证提供程序
每一种 LDAP 身份验证提供程序都在外部 LDAP 服务器中存储用户和组信息。其主要区别在于:在默认情况下,它们是如何配置以与其相应 LDAP 服务器的典型目录 Schema 相匹配的。
WebLogic Server 不支持任何特定的 LDAP 服务器,也不对它们进行认证。任何与 LDAP v2 和 v3 兼容的 LDAP 服务器都应该可以用于 WebLogic Server。以下 LDAP 目录服务器已经过测试:
Sun iPlanet 4.1.3 版
Windows 2000 中附带的 Active Directory
Open LDAP 2.0.7 版
Novell NDS 8.5.1 版
LDAP 身份验证提供程序还可以用于访问其他 LDAP 服务器。但是,必须使用 LDAP 身份验证提供程序 (LDAPAuthenticator) 或选择预定义的 LDAP 提供程序并进行自定义。请参阅访问其他 LDAP 服务器。
使用 LDAP 身份验证提供程序的要求
如果某 LDAP 身份验证提供程序是安全领域中唯一一个经过配置的身份验证提供程序,则必须具有 Admin 角色才能启动 WebLogic Server 并使用 LDAP 目录中的用户或组。请在 LDAP 目录中执行下列操作之一:
配置 LDAP 身份验证提供程序:主要步骤
要配置 LDAP 身份验证提供程序,请执行下列操作:
选择一个与 LDAP 服务器匹配的 LDAP 身份验证提供程序并在安全领域中创建该提供程序的实例。请参阅“管理控制台联机帮助”中的配置身份验证和标识声明提供程序。
为 LDAP 身份验证提供程序配置提供程序特定的特性,可通过管理控制台来完成此操作。对于每个 LDAP 身份验证提供程序,都存在具有以下功能的特性:
启用 LDAP 服务器和 LDAP 身份验证提供程序之间的通信。为实现更加安全的部署,BEA 建议使用 SSL 协议来保护 LDAP 服务器和 WebLogic Server 之间的通信。使用 SSLEnabled 特性启用 SSL。
配置用于控制 LDAP 身份验证提供程序在 LDAP 目录中的搜索方式的选项。
指定用户在 LDAP 目录结构中的存储位置。
指定组在 LDAP 目录结构中的存储位置。
定义组成员的查找方式。
配置用于控制 LDAP 服务器缓存的性能选项。在管理控制台中,使用提供程序的“配置: 提供程序特定”和“性能”页可以配置该缓存。请参阅提高 WebLogic 和 LDAP 身份验证提供程序的性能。
有关详细信息,请参阅:
访问其他 LDAP 服务器
本版本的 WebLogic Server 中的 LDAP 身份验证提供程序已经过配置,可随时用于 SunONE (iPlanet)、Active Directory、Open LDAP 和 Novell NDS LDAP 服务器。此外,还可以使用 LDAP 身份验证提供程序访问其他类型的 LDAP 服务器。可以选择 LDAP 身份验证提供程序 (LDAPAuthenticator),也可以选择与新 LDAP 服务器最匹配的现有 LDAP 提供程序并对现有配置进行自定义,以使其与 LDAP 服务器的目录 Schema 和其他特性相匹配。
动态组和 WebLogic Server
很多 LDAP 服务器都使用动态组或虚拟组的概念。这些组并不包含用户和组的列表,而是由一些定义属于该组的用户集的策略声明、查询或代码组成。在对用户的组成员资格进行任何更改后,即使组标记为动态组,用户也必须退出并再次登录才能使该更改生效。“动态”一词指的是在 WebLogic Server 中定义组而不定义组的任何运行时语义。
配置 LDAP 身份验证提供程序的故障转移
可以将 LDAP 提供程序配置为与多台 LDAP 服务器一起工作,并在某台 LDAP 服务器不可用时启用故障转移。使用主机特性(在管理控制台中位于 LDAP 身份验证提供程序的“配置: 提供程序特定”页上)可以指定其他 LDAP 服务器的名称。每个主机名都可以在尾部包含一个逗号和一个端口号。另外,还应设置 LDAP 身份验证提供程序的并行连接延迟和连接超时特性:
“并行连接延迟” – 指定在尝试同时连接到多台服务器时的延迟秒数。将尝试连接到列表中的第一台服务器。只有当连接到当前主机失败时,才会尝试列表中的下一项。此设置可能导致应用程序在主机关机时阻塞过长时间。如果该值大于 0,则在经过指定的延迟秒数后,将启动另一个连接设置线程。如果该值为 0,则会将连接尝试序列化。
“连接超时” – 指定在建立与 LDAP 服务器的连接时需要等待的最大秒数。如果将它设置为 0,则不存在最长时间限制,WebLogic Server 将一直等到 TCP/IP 层超时并返回连接失败为止。应根据 TCP/IP 的配置将此值设置为大于 60 秒。
以下示例列出了在将 LDAP 身份验证提供程序配置为进行 LDAP 故障转移时发生的几种情况。
LDAP 故障转移示例 1
在以下场景中,一个 LDAP 身份验证提供程序在它的下列主机特性中配置为与三台服务器一起工作:directory.knowledge.com:1050、people.catalog.com 和 199.254.1.2。LDAP 服务器的状态如下:
directory.knowledge.com:1050 已关机
people.catalog.com 已启动
199.254.1.2 已启动
WebLogic Server 将尝试连接到 directory.knowledge.com。在 10 秒后,连接尝试将超时,WebLogic Server 将尝试连接到下一台指定的主机 (people.catalog.com)。WebLogic Server 然后使用 people.catalog.com 作为该连接的 LDAP 服务器。
表 5-1 LDAP 配置示例 1
|
|
|
|
|
directory.knowledge.com:1050 people.catalog.com 199.254.1.2 |
|
|
|
|
|
|
LDAP 故障转移示例 2
在以下场景中,WebLogic Server 将尝试连接到 directory.knowledge.com。在 1 秒(由并行连接延迟特性指定)之后,连接尝试将超时,WebLogic Server 将尝试同时连接到下一台指定的主机 (people.catalog.com) 和 directory.knowledge.com。如果连接到 people.catalog.com 成功,WebLogic Server 将使用 people.catalog.com 作为该连接的 LDAP 服务器。WebLogic Server 在连接到 people.catalog.com 成功后,将取消到 directory.knowledge.com 的连接。
表 5-2 LDAP 配置示例 2
|
|
|
|
|
directory.knowledge.com:1050 people.catalog.com 199.254.1.2 |
|
|
|
|
|
|
提高 WebLogic 和 LDAP 身份验证提供程序的性能
要提高 WebLogic 和 LDAP 身份验证提供程序的性能,请执行下列操作:
优化由 WebLogic 和 LDAP 身份验证提供程序使用的组成员资格缓存。请参阅优化组成员资格缓存。
公开安全领域的委托人验证器缓存并提高它的阈值。请参阅优化委托人验证器缓存。
如果使用的是 Active Directory 身份验证提供程序,请使用 tokenGroups 选项将其配置为执行组成员资格查找。 tokenGroups 选项以系统 ID (SID) 值的数组形式拥有用户的整个组成员资格。SID 值在 Active Directory 中经过了特殊的索引编制,可以产生极快的查找响应。请参阅配置 Active Directory 身份验证提供程序以提高性能。
优化组成员资格缓存
要优化 WebLogic 和 LDAP 身份验证提供程序的组成员资格缓存,请设置下列特性(在管理控制台中,这些特性位于 LDAP 身份验证提供程序的“配置: 提供程序特定”和“性能”页上):
“组成员资格搜索”– 控制组搜索深度是有限还是无限。此选项可控制对嵌套组的搜索深度。对于仅使用嵌套组层次的第一层的配置,此选项允许将搜索范围限制在组的第一层,以此来提高用户在搜索时的性能。
如果定义了有限搜索,则必须定义最大组成员资格搜索级别。
如果定义了无限搜索,则会忽略最大组成员资格搜索级别。
“最大组成员资格搜索级别”– 控制在定义了组成员资格搜索时的组成员资格搜索深度。可能的值有:
0 – 指示将仅查找直接组。即,当在组 A 中搜索成员资格时,将仅查找组 A 中的直接成员。如果组 B 是组 A 的成员,此搜索将不会找到组 B 中的成员。
任意正数 – 指示要搜索的级数。例如,如果将此选项设置为 1,则组 A 中的成员资格搜索将返回组 A 的直接成员。如果组 B 是组 A 的成员,则此搜索还会找到组 B 中的成员。但是,如果组 C 是组 B 的成员,此搜索将不会找到组 C 中的成员。
“启用组成员资格查找层次缓存”– 指示是否缓存在递归成员资格查找期间所找到的组成员资格层次。将缓存所查找的每个子树。此缓存将保留组所属的多个组。此设置仅在启用组成员资格后才适用。默认情况下会禁用此设置。
“缓存中的最大组层次数”– 保留组成员资格层次的“最近最少使用 (LRU)”缓存的最大大小。此设置仅在启用“启用组成员资格查找层次缓存”后才适用。
“组层次缓存 TTL”– 已缓存条目在缓存中保留的秒数。默认值为 60 秒。
在计划缓存设置时,请记住以下注意事项:
启用缓存涉及在性能和准确性之间进行权衡。使用缓存意味着可以更快地检索数据,但存在所得数据不是最新的可用数据的风险。
生存时间 (TTL) 设置愿意接受可能过期的数据的时间长度。它在很大程度上取决于特定的业务需要。如果频繁更改用户的组成员资格,则较长的 TTL 可能意味着与更改相关的组不会立即显示出来,因而可能需要设置较短的 TTL。如果在添加用户后几乎未更改其组成员资格,则设置较长的 TTL 可能会比较恰当。
缓存大小与可用内存量和缓存 TTL 相关。应考虑在 TTL 时间跨度内可以加载的条目数,并根据该数字调整缓存的大小。TTL 越长,所需要的缓存大小就越大。
在 iPlanet 身份验证提供程序中配置动态组以提高性能
动态组并不列出它们的成员名。而是由匹配的用户特性来构造动态组的成员资格。由于需要为动态组动态计算组成员资格,因此,对于较大的组,存在导致性能下降问题的风险。适当配置 iPlanet 身份验证提供程序可以提高存在动态组时的性能。
在 iPlanet 身份验证提供程序中,“用户动态组 DN 特性”特性指定 LDAP 用户对象的特性,而该对象又指定此用户所属的动态组的识别名 (DN)。如果此属性不存在,WebLogic Server 将通过评估动态组的 URL 来确定用户是否为组的成员。默认情况下,用户动态组 DN 特性为空。要在将用户动态组 DN 特性设置为其他值时提高性能,请设置 iPlanet 身份验证提供程序的下列特性:
要在管理控制台中设置这些特性,请执行下列操作:
展开“安全领域”-->“领域名称”-->“提供程序”-->“身份验证”。
在 iPlanet 身份验证提供程序的“提供程序特定”选项卡上,设置“用户动态组 DN 特性”。将“动态组对象类”和“动态成员 URL 特性”设置为空(删除字段中的所有内容)并将“动态组名特性”设置保留为 cn。
优化委托人验证器缓存
要提高 WebLogic 或 LDAP 身份验证提供程序的性能,可以适当增加由 WebLogic 委托人验证提供程序所使用的缓存的设置。由 WebLogic 委托人验证提供程序使用的委托人验证器可缓存经过签名的 WLSAbstractPrincipal。要优化委托人验证器缓存的性能,请设置安全领域的下列特性(在管理控制台中,这些特性位于安全领域的“配置: 性能”页上):
“启用 WebLogic 委托人验证器缓存”– 指示 WebLogic 委托人验证提供程序是否使用缓存。仅当安全领域中的身份验证提供程序使用 WebLogic 委托人验证提供程序和 WLSAbstractPrincipal 时,此设置才适用。默认情况下启用此设置。
“缓存中的最大 WebLogic 委托人数”– 为验证的 WLSAbstractPrincipal 使用的“最近最少使用 (LRU)”缓存的最大大小。默认设置为 500。此设置仅在启用“启用 WebLogic 委托人验证器缓存”后才适用。
配置 Active Directory 身份验证提供程序以提高性能
要将 Active Directory 身份验证提供程序配置为使用 tokenGroups 选项,请设置下列特性(在管理控制台上,这些特性位于 Active Directory 身份验证提供程序的“配置: 提供程序特定”页上):
“使用标记组进行组成员资格查找”– 指示是否用 Active Directory tokenGroups 查找算法替换标准的递归组成员资格查找算法。默认情况下不启用此选项。
| 注意: |
需要有访问 tokenGroups 选项的权限(这意味着,访问 LDAP 目录的用户必须有权读取 tokenGroups 选项并且 tokenGroups 选项必须位于用户对象的 Schema 中)。 |
“启用 SID 转换为组查找缓存”– 指示是否缓存将 SID 转换为组名的查找结果。此设置仅在启用“使用标记组进行组成员资格查找”选项后才适用。
“缓存中的 SID 转换为组查找的最大大小”– 用于保存 SID 转换为组查找的“最近最少使用 (LRU)”缓存的最大大小。此设置仅在同时启用“使用标记组进行组成员资格查找”和“启用 SID 转换为组查找缓存”选项后才适用。
配置 RDBMS 身份验证提供程序
在 WebLogic Server 中,RDBMS 身份验证提供程序是基于用户名/密码的身份验证提供程序,它使用关系数据库(而不是 LDAP 目录)作为其用户、密码和组信息的数据存储。WebLogic Server 包含下列 RDBMS 身份验证提供程序:
SQL 验证器 – 使用 SQL 数据库,并允许对该数据库进行读写访问。默认情况下,此身份验证提供程序使用典型的 SQL 数据库 Schema 进行配置,可以对该数据库 Schema 进行配置,以使其符合您的数据库 Schema。请参阅配置 SQL 身份验证提供程序。
只读 SQL 验证器 – 使用 SQL 数据库并允许对该数据库进行只读访问。要进行写入访问,应使用 SQL 数据库自身的接口,而不是 WebLogic 安全提供程序。请参阅配置只读 SQL 验证器。
自定义 RDBMS 验证器 – 需要编写插件类。如果需要使用关系数据库来存储身份验证数据,但 SQL 验证器的 Schema 配置并未准确匹配现有的数据库 Schema,则此提供程序便可能是一个较好的选择。请参阅配置自定义 DBMS 验证器。
有关向安全领域中添加 RDBMS 身份验证提供程序的信息,请参阅“管理控制台帮助”中的配置身份验证和标识声明提供程序。在创建 RDBMS 身份验证提供程序的实例后,即可在管理控制台中的 RDBMS 身份验证提供程序的“配置: 提供程序特定”页上对它进行配置。
RDBMS 身份验证提供程序常用特性
所有这三种 RDBMS 身份验证提供程序都包含下列配置选项。
数据源特性
数据源名指定连接到数据库所用的 WebLogic Server 数据源。
组搜索特性
“组成员资格搜索”和“最大组成员资格搜索级别”特性指定递归组成员资格搜索是否为有限搜索,以及在有限搜索中可以搜索的组成员资格的级数。例如,如果将“组成员资格搜索”指定为 LIMITED,同时将“最大组成员资格搜索级别”指定为 0,则 RDBMS 身份验证提供程序将仅查找用户为其直接成员的组。指定最大组成员资格搜索级别可以减少在身份验证期间执行的 DBMS 查询数,因此在某些场景中,它可以极大地提高身份验证的性能。但是,只有在能够确定所需的组成员资格位于指定的搜索级别限制中时,才应限制组成员资格搜索。
组缓存特性
通过缓存组层次查找的结果,可以提高 RDBMS 身份验证提供程序的性能。使用此缓存可以减少 RDBMS 身份验证提供程序需要访问数据库的频率。在管理控制台中,可以使用身份验证提供程序的“性能”页来配置此缓存的用法、大小和持续时间。请参阅“管理控制台联机帮助”中的安全领域: 安全提供程序: SQL 验证器: 性能。
配置 SQL 身份验证提供程序
有关配置 SQL 身份验证提供程序的详细信息,请参阅“管理控制台联机帮助”中的安全领域: 安全提供程序: SQL 验证器: 提供程序特定。除了 RDBMS 身份验证提供程序常用特性中描述的特性外,SQL 身份验证提供程序还具有下列可配置特性。
密码特性
下列特性控制 RDBMS 身份验证提供程序及其基本数据库对用户密码的处理方式:
“已启用纯文本密码”
“已保留密码样式”
“密码样式”
“密码算法”
SQL 语句特性
SQL 语句特性指定提供程序在访问和编辑数据库中的用户名、密码和组信息时所使用的 SQL 语句。在 SQL 语句特性中使用默认值的前提是数据库 Schema 包含以下表:
users (username, password, [description])
groupmembers (group name, group member)
groups (group name, group description)
| 注意: |
SQL 语句引用的表必须位于数据库中;提供程序将不会创建它们。可以根据需要修改这些特性,以与数据库的 Schema 相匹配。但是,如果数据库 Schema 与此默认的 Schema 根本不同,则可能需要改用自定义 DBMS 身份验证提供程序。 |
配置只读 SQL 验证器
有关配置只读 SQL 身份验证提供程序的详细信息,请参阅“管理控制台联机帮助”中的安全领域: 安全提供程序: 只读 SQL 验证器: 提供程序特定。除了 RDBMS 身份验证提供程序常用特性中描述的特性外,只读 SQL 身份验证提供程序的可配置特性还包含用于指定提供程序在列出数据库中的用户名、密码和组信息时所使用的 SQL 语句的特性。可以根据需要修改这些特性,以与数据库的 Schema 相匹配。
配置自定义 DBMS 验证器
与其他 RDBMS 身份验证提供程序一样,自定义 DBMS 身份验证提供程序也将关系数据库用作其保存用户、密码和组信息的数据存储。如果数据库 Schema 未完全映射到 SQL 验证器所预期的 SQL Schema,则应使用此提供程序。除了 RDBMS 身份验证提供程序常用特性中描述的特性外,自定义 DBMS 身份验证提供程序还包含下列可配置特性。
插件类特性
自定义 DBMS 身份验证提供程序需要用户编写实现 weblogic.security.providers.authentication.CustomDBMSAuthenticatorPlugin 接口的插件类。该类必须位于 CLASSPATH 中,并且必须在自定义 DBMS 身份验证提供程序的“插件类名”特性中指定此类。可以选择使用“插件属性”特性来指定由插件类定义的属性的值。
配置 Windows NT 身份验证提供程序
Windows NT 身份验证提供程序使用为 Windows NT 域定义的帐户信息对用户和组进行身份验证,并允许将 Windows NT 用户和组列在 WebLogic Server 管理控制台中。
要使用 Windows NT 身份验证提供程序,请先在管理控制台中创建该提供程序。在大多数情况下,不需要再执行其他任何操作来配置此身份验证提供程序。根据 Windows NT 域的配置方式,可能需要设置“域控制器”和“域控制器列表”特性,这些特性可控制 Windows NT 身份验证提供程序与 Windows NT 域之间的交互方式。
域控制器设置
Windows NT 域中的用户名可以采用多种不同的形式。可能需要配置 Windows NT 身份验证提供程序,才能与用户在登录时预期使用的用户名形式相匹配。简单用户名是不指示域的用户名,例如 smith。复合用户名将用户名与域名组合在一起,可采用类似 domain\smith 或 smith@domain 的形式。
如果本地计算机不在 Microsoft 域中,则不需要更改“域控制器”和“域控制器列表”特性。在独立计算机上,要进行身份验证的用户和组仅在该计算机上定义。
如果本地计算机位于 Microsoft 域中并且是本地域的域控制器,则不需要更改“域控制器列表”特性。在此情况下,本地计算机和域中定义的用户相同,因而可以使用默认的“域控制器”设置。
如果本地计算机位于 Microsoft 域中,但它不是本地域的域控制器,则在本地计算机或域中可以找到一个简单用户名。在此情况下,请考虑以下几点:
当本地计算机位于 Microsoft 域中时,是否需要防止在控制台上显示本地计算机中的用户和组?
当输入简单用户名时,是否需要查找本地计算机中的用户并对他们进行身份验证?
在这两个问题的答案中,如果有一个是肯定的,则应将“域控制器”特性设置为 DOMAIN。
如果存在多个可信域,则可能需要将“域控制器”特性设置为 LIST 并指定一个域控制器列表。执行此操作时需满足以下条件:
需要在控制台中显示其他可信域中的用户和组,或者
预期用户将输入简单用户名并且这些用户位于可信域中(即,用户将使用类似 smith 而非 smith@domain 或 domain\Smith 的用户名进行登录)。
如果符合上述两种情况之一,则应将“域控制器”特性设置为 LIST 并在“域控制器列表”特性中为要使用的可信域指定域控制器的名称。此外,还应考虑是使用本地计算机和本地域控制器的显式名,还是在它们的列表中使用占位符。在“域控制器列表”特性中可以使用下列占位符:
[Local]
[LocalAndDomain]
[Domain]
LogonType 设置
在 Windows NT 身份验证提供程序中,LogonType 特性的适当值取决于需要能够对其进行身份验证的用户的 Windows NT 登录权限:
如果在将要运行 WebLogic Server 的计算机上向用户分配了“本地登录”权限,则应使用默认值 interactive。
如果向用户分配了“从网络访问此计算机”权限,则应将 LogonType 特性更改为 network。
必须将上述权限之一分配给 Windows NT 域中的用户,否则 Windows NT 身份验证提供程序将无法对任何用户进行身份验证。
UPN 名设置
UPN 样式用户名可以采用 user@domain 形式。可以配置 Windows NT 身份验证提供程序如何处理包含 @ 字符但可能不是 UPN 名的用户名,方法是设置 Windows NT 身份验证提供程序中的 mapUPNNames 特性。
在 Windows NT 域或本地计算机中的用户名中,如果除 UPN 用户名外都不包含 @ 字符,则可以使用 mapUPNNames 特性的默认值 FIRST。但是,可能需要考虑将该设置更改为 ALWAYS 以减少检测到身份验证失败所需的时间量。在指定了较长的域控制器列表时尤为如此。
如果 Windows NT 域确实允许在非 UPN 用户名中使用 @ 字符,则:
当包含 @ 字符的用户名更可能是 UPN 用户名(而非简单用户名)时,请将 mapUPNNames 特性设置为 FIRST。
当包含 @ 字符的用户名更可能是简单用户名(而非 UPN 用户名)时,请将 mapUPNNames 特性设置为 LAST。
当用户名从不采用 UPN 格式时,请将 mapUPNNames 特性设置为 NEVER。
配置标识声明提供程序
如果使用的是周边身份验证,则需要使用标识声明提供程序。在周边身份验证中,WebLogic Server 之外的系统通过标记建立信任(它与简单身份验证不同,在后者中,WebLogic Server 通过用户名和密码建立信任)。标识声明提供程序会验证标记并执行在标记中建立有效性和信任所需的一切操作。每个标识声明提供程序都可支持一种或多种标记格式。
WebLogic Server 包含下列标识声明提供程序:
WebLogic 标识声明者
LDAP X.509 标识声明者
协商标识声明者
SAML 标识声明者
可以在一个安全领域中配置多个标识声明提供程序,但都不是必需的。标识声明提供程序可以支持多种标记类型,但在给定的时间内,每个标识声明提供程序只能有一种标记类型处于活动状态。在管理控制台中,可以在“提供程序特定”配置页的“活动类型”字段中定义活动标记类型。WebLogic 标识声明提供程序支持使用 X.509 证书和 CORBA Common Secure Interoperability version 2 (CSI v2) 的标识声明。如果使用的是 CSI v2 标识声明,则应在“可信委托人”字段中定义客户端委托人的列表。
如果在安全领域中配置了多个标识声明提供程序,则所有这些提供程序都可以支持同一种标记类型。但是,该标记一次只能对一个提供程序可用。
通过 WebLogic 标识声明提供程序,可以使用用户名映射器将经过标识声明提供程序身份验证的标记映射到安全领域中的某个用户。有关配置用户名映射器的详细信息,请参阅配置 WebLogic 凭据映射提供程序。
如果将 Web 应用程序中的身份验证类型设置为 CLIENT-CERT,则 WebLogic Server 中的 Web 应用程序容器将对请求头信息和 Cookie 中的值执行标识声明。如果该头信息名或 Cookie 名与已配置标识声明提供程序的活动标记类型匹配,则将值传递给该提供程序。
“提供程序特定”页上的“需要 Base64 解码”值将确定在将请求头信息值或 Cookie 值发送给标识声明提供程序之前,该值是否必须为 Base64 解码值。默认情况下会启用此设置,以便提供向后兼容性;但大多数标识声明提供程序都会禁用此选项。
有关详细信息,请参阅“管理控制台联机帮助”中的配置身份验证和标识声明提供程序。此外,请参阅以下部分:
LDAP X509 标识声明提供程序的工作原理
LDAP X509 标识声明提供程序将执行下列操作:接收 X509 证书,查找与该证书关联的用户的 LDAP 对象,确保 LDAP 对象中的证书与已提供的证书匹配,然后从 LDAP 对象中检索该用户的名称。
LDAP X509 标识声明提供程序的工作方式如下:
将应用程序设置为使用周边身份验证(换句话说,用户或系统进程使用标记来声明其标识)。
在 SSL 握手过程中,应用程序提供其证书。证书中的主题 DN 可用于在 LDAP 服务器中查找表示该用户的对象。该对象包含用户的证书和名称。
LDAP X509 标识声明提供程序使用主题 DN 中的证书构造 LDAP 搜索,以在 LDAP 服务器中查找该用户的 LDAP 对象。它会从该对象获取证书,并确保该证书与它保留的证书匹配,然后检索该用户的名称。
将该用户名传递给安全领域中已配置的身份验证提供程序。身份验证提供程序确保该用户存在并查找该用户所属的组。
配置 LDAP X509 标识声明提供程序:主要步骤
通常,如果使用 LDAP X509 标识声明提供程序,则还需要配置使用 LDAP 服务器的 LDAP 身份验证提供程序。该身份验证提供程序将在确保该用户存在后查找其所属的组。应确保这两个身份验证提供程序都经过适当配置,以便可以与同一 LDAP 服务器进行通信。
要使用 LDAP X509 标识声明提供程序,请执行下列操作:
获取用户的证书并将其置于 LDAP 服务器中。请参阅配置标识和信任。
证书中的主题 DN 与该用户对象在 LDAP 服务器中的位置之间必须存在相关性。该用户的 LDAP 对象还必须包含证书的配置信息以及主题中将使用的用户名。
在安全领域中,配置 LDAP X509 标识声明提供程序。请参阅“管理控制台联机帮助”中的配置身份验证和标识声明提供程序。
在 WebLogic Server 管理控制台中,对 LDAP X509 标识声明提供程序进行配置,以使其在给定证书的主题 DN 时能够在 LDAP 目录中查找该用户的 LDAP 对象。
将 LDAP X509 标识声明提供程序配置为在 LDAP 服务器中搜索,以查找该用户的 LDAP 对象。此操作需要提供下列数据。
要从其开始搜索的基本 LDAP DN。LDAP X509 标识声明提供程序的“证书映射”选项将指示标识声明提供程序如何根据证书的主题 DN 来构造基本 LDAP DN。LDAP 对象必须包含一个可用于保留证书的特性。
仅返回与已定义的选项集匹配的 LDAP 对象的搜索筛选器。该筛选器会缩小 LDAP 的搜索范围。配置用户筛选器搜索,以根据证书的主题 DN 构造搜索筛选器。
将在 LDAP 目录中搜索基本 LDAP DN 的位置。LDAP X509 标识提供程序将进行递归搜索(向下一级)。此值必须与证书主题 DN 中的相应值匹配。
配置 LDAP X509 标识声明提供程序的“证书特性”特性,以指定用户的 LDAP 对象如何保留证书。LDAP 对象必须包含一个可用于保留证书的特性。
配置 LDAP X509 标识声明提供程序的“用户名特性”特性,以指定将由 LDAP 对象的哪些特性来保留应出现在主题 DN 中的用户名。
配置 LDAP X509 标识声明提供程序的 LDAP 服务器连接。LDAP 服务器信息应与为此安全领域中配置的 LDAP 身份验证提供程序所定义的信息相同。
配置 LDAP 身份验证提供程序,以将其与 LDAP X509 标识声明提供程序一起使用。LDAP 服务器信息应与为步骤 7 中配置的 LDAP X509 标识声明提供程序所定义的信息相同。请参阅配置 LDAP 身份验证提供程序。
配置协商标识声明提供程序
协商标识声明提供程序允许使用 Microsoft 客户端进行单一登录 (SSO)。此标识声明提供程序将对简单和受保护协商 (SPNEGO) 标记进行解码以获取 Kerberos 标记,并在验证 Kerberos 标记后将 Kerberos 标记映射到 WebLogic 用户。协商标识声明提供程序使用 Java 通用安全服务 (GSS) 应用程序编程接口 (API) 来通过 Kerberos 接受 GSS 安全上下文。
协商标识声明提供程序是 WebLogic 安全框架所定义的安全服务提供程序接口 (SSPI) 的实现,它提供基于客户端的 SPNEGO 标记对客户端进行身份验证所需的逻辑。
有关向安全领域中添加协商标识声明提供程序的信息,请参阅“管理控制台联机帮助”中的配置身份验证和标识声明提供程序。有关在 Microsoft 客户端 SSO 配置中使用协商标识声明提供程序的信息,请参阅使用 Microsoft 客户端配置单一登录。
表 5-3 协商标识声明者特性
|
|
|
|
|
指示协商标识声明提供程序和 Servlet 筛选器是否应在将 Web 应用程序配置为执行 FORM 身份验证时进行协商。 |
|
|
此协商标识声明提供程序用于身份验证的标记类型。可用的标记类型为 Authorization.Negotiate 和 WWW-Authenticate.Negotiate。
应确保同一安全领域中配置的其他标识声明提供程序都未将此特性设置为 X509。 |
配置 SAML 标识声明提供程序
SAML 标识声明提供程序充当 SAML 安全声明的使用者,它允许将 WebLogic Server 作为使用 SAML 进行单一登录的目标站点。SAML 标识声明提供程序将检查签名并在由该提供程序维护的证书注册表中验证证书的信任,以此来验证 SAML 1.1 声明。如果声明有效,则表明标识是基于该声明中包含的 AuthenticationStatement 来声明的。SAML 标识声明提供程序还可以确保该声明以前从未使用过。如果需要在某个服务器实例上部署 SAML 声明使用者服务,则必须配置 SAML 标识声明提供程序。
本版本的 WebLogic Server 包含两个 SAML 标识声明提供程序。SAML 标识声明者版本 2 提供了一系列显著增强的配置选项,因此建议在新部署中使用此工具。WebLogic Server 9.1 中不赞成使用 SAML 标识声明者版本 1。一个安全领域不能具有多个 SAML 标识声明提供程序,如果该安全领域同时使用了 SAML 标识声明提供程序和 SAML 凭据映射提供程序,则这两个提供程序的版本必须相同。请勿在使用版本 2 SAML 提供程序的同一安全领域中使用版本 1 SAML 提供程序。有关配置 SAML 标识声明提供程序版本 1 的信息,请参阅 WebLogic Server 9.0 文档中的Configuring a SAML Identity Assertion Provider。
有关如何在 SAML 单一登录配置中使用 SAML 标识声明提供程序的信息,请参阅使用 Web 浏览器和 HTTP 客户端配置单一登录。有关 WebLogic Server 中对 SAML 支持的一般信息,请参阅“了解 WebLogic 安全性”中的安全声明标记语言 (SAML)。
声明方注册表
在将 WebLogic Server 配置为充当 SAML 安全声明的使用者时,需要注册将接受其 SAML 声明的声明方。对于每个 SAML 声明方,均可以指定以下内容:所使用的 SAML 配置文件、有关声明方的详细信息以及从声明方接收到的声明中的预期特性。有关信息,请参阅:
证书注册表
SAML 标识声明提供程序会维护可信证书的注册表。每当收到证书时,它都将根据注册表中的证书验证所接收证书的有效性。使用此注册表中的证书可以:
在 SAML 标识声明提供程序收到经过签名的声明时检查其信任。
在发送 POST 配置文件声明(经过签名的 SAML 响应对象)的源站点中检查信任。
在使用 SSL 连接时,可在通过声明检索服务 (ARS) 检索工件的目标站点中检查信任。
可以通过管理控制台向证书注册表中添加可信证书:
在控制台中,导航至“安全领域”>“您的领域”>“提供程序”>“验证”页。
单击 SAML 标识声明提供程序的名称,然后打开“管理”>“证书”页。
通过“管理”>“证书”页,可以在注册表中添加、查看或删除证书。
排序标识声明以供 Servlet 选择
在发送 HTTP 请求时,可能存在多个可用于标识声明的匹配项。但是,标识声明提供程序一次只能使用一个活动的标记类型。因此,无法通过一次调用来提供可供使用的一组标记。这样,将强制 WebLogic Server 中包含的 Servlet 在多个标记中进行选择以执行标识声明。将使用以下排序:
X.509 数字证书(表明与客户端或代理插件使用双向 SSL,在客户端和 Web 服务器之间使用双向 SSL),条件是 X.509 是默认安全领域中为标识声明提供程序配置的活动标记类型之一。
名称采用 WL-Proxy-Client-<TOKEN> 形式的头信息,其中 <TOKEN> 是默认安全领域中为标识声明提供程序配置的活动标记类型之一。
| 注意: |
不赞成使用此方法,应仅将其用于实现向后兼容性。 |
名称采用 <TOKEN> 形式的头信息,其中 <TOKEN> 是默认安全领域中为标识声明提供程序配置的活动标记类型之一。
名称采用 <TOKEN> 形式的 Cookie,其中 <TOKEN> 是默认安全领域中为标识声明提供程序配置的活动标记类型之一。
例如,如果将默认安全领域中的某个标识声明提供程序配置为使用 FOO 和 BAR 标记作为活动标记类型,(在以下示例中,假定除活动标记类型外,HTTP 请求中不包含任何与标识声明相关的内容),则将按照以下方式执行标识声明:
如果请求具有 FOO 头信息并通过双向 SSL 连接传入,则将使用 X.509 进行标识声明。
如果传入的请求具有 FOO 头信息和 WL-Proxy-Client-BAR 头信息,则将使用 BAR 标记进行标识声明。
如果传入的请求具有 FOO 头信息和 BAR Cookie,则将使用 FOO 标记进行标识声明。
由于未定义同一级别上多个标记之间的顺序,因此:
如果传入的请求具有 FOO 头信息和 BAR 头信息,则将使用 FOO 或 BAR 标记进行标识声明,但未指定具体使用哪一个标记。
如果传入的请求具有 FOO Cookie 和 BAR Cookie,则将使用 FOO 或 BAR 标记进行标识声明,但未指定具体使用哪一个标记。
在服务器缓存中配置标识声明性能
在使用标识声明提供程序时,无论是用于 X.509 证书还是用于某种其他类型的标记,都将在服务器中缓存主题(主题是指单个实体(例如一个人)的相关信息的分组,包括标识及其与安全相关的配置选项)。通过在服务器中缓存主题,将极大地提高出现以下情况时的性能:Servlet 和 EJB 方法包含 <run-as> 标记;使用标识声明但未在 HTTPSession 中进行缓存(例如,在签名和加密 XML 文档时)的其他情况。
可以通过 -Dweblogic.security.identityAssertionTTL 命令行参数设置主题可以在缓存中生存的最大秒数,以此来更改该缓存中项目的生命周期。该命令行参数的默认值为 300 秒(即 5 分钟)。其可能的值包括:
小于 0 – 禁用缓存。
0 – 启用缓存,并且只要服务器一直运行,缓存中的标识便永不超时。对于在已缓存实体的用户数据库中进行的任何更改,都必须在重新启动服务器后服务器才能实现这些更改。
大于 0 – 启用缓存,并在指定的秒数后重置缓存。
要提高标识声明的性能,请为此命令行参数指定较高的值。
| 注意: |
随着标识声明性能的不断提高,标识声明提供程序对已配置身份验证提供程序中的更改的响应速度会越来越慢。例如,在用户组中进行某项更改后,只有从缓存中刷新并重新创建主题,才会反映出该项更改。在为该命令行参数设置较低的值后,可以提高身份验证更改的响应速度,但会降低性能。 |
配置用户名映射器
WebLogic Server 在与 Web 浏览器或 Java 客户端建立双向 SSL 连接时会对其数字证书进行验证。但是,数字证书不会将 Web 浏览器或 Java 客户端标识为 WebLogic Server 安全领域中的用户。如果 Web 浏览器或 Java 客户端请求由安全策略保护的 WebLogic Server 资源,WebLogic Server 将要求该 Web 浏览器或 Java 客户端提供标识。WebLogic 标识声明提供程序允许启用用户名映射器,以便将 Web 浏览器或 Java 客户端的数字证书映射到 WebLogic Server 安全领域中的用户。
该用户名映射器必须是 weblogic.security.providers.authentication.UserNameMapper 接口的实现。该接口可根据符合需要的任何 Scheme 将标记映射到 WebLogic Server 用户名。默认情况下,WebLogic Server 将提供 weblogic.security.providers.authentication.UserNameMapper 接口的默认实现。您也可以编写自己的实现。
WebLogic 标识声明提供程序将针对以下类型的标识声明标记调用用户名映射器:
通过 SSL 握手传递的 X.509 数字证书
通过 CSIv2 传递的 X.509 数字证书
通过 CSIv2 传递的 X.501 识别名
默认用户名映射器将使用数字证书的主题 DN 或识别名来映射到 WebLogic Server 安全领域中的相应用户。例如,可以将用户名映射器配置为将主题 DN 的电子邮件特性中的用户 (smith@example.com) 映射到 WebLogic Server 安全领域中的用户 (smith)。使用 WebLogic 标识声明提供程序的“默认用户名映射器特性类型”和“用户名映射器特性的默认分隔符”特性可以定义以下信息:
“默认用户名映射器特性类型” - 数字证书中用于计算用户名的主题识别名 (DN)。有效值包括:C、CN、E、L、O、OU、S and STREET。
“用户名映射器特性的默认分隔符”– 结束用户名。用户名映射器将使用该值左侧的所有内容来计算用户名。默认分隔符为 @。
有关详细信息,请参阅“管理控制台联机帮助”中的配置用户名映射器。
配置自定义用户名映射器
还可以编写自定义用户名映射器来根据适合需要的任何 Scheme 将标记映射到 WebLogic Server 用户名。自定义用户名映射器必须是 weblogic.security.providers.authentication.UserNameMapper 接口的实现。随后可以使用 WebLogic 标识声明提供程序的“用户名映射器类名”特性来在活动安全领域中配置该自定义用户名映射器。
有关详细信息,请参阅“管理控制台联机帮助”中的配置自定义用户名映射器。
|