确保 WebLogic Server 安全

     上一页下一页  在新窗口中打开目录     
在此处开始内容

使用 Web 浏览器和 HTTP 客户端配置单一登录

以下部分描述如何通过基于安全声明标记语言(Security Assertion Markup Language,简称 SAML)1.1 的身份验证来使用 Web 浏览器或其他 HTTP 客户端设置单一登录(Single Sign-on,简称 SSO)。

 


基于 SAML 的单一登录概述

使用安全声明标记语言 (SAML) 可以实现运行在 WebLogic Server 域及 Web 浏览器或其他 HTTP 客户端中的 Web 应用程序或 Web Service 间的跨平台的身份验证。WebLogic Server 支持基于 SAML 的单一登录 (SSO)。当用户在某个参与单一登录 (SSO) 配置的站点上通过身份验证后,则 SSO 配置中的其他站点会自动通过对这些用户的身份验证,而无需对这些站点单独登录。

SAML SSO 的工作方式如下:

  1. Web 用户通过 SAML 源站点的身份验证。
  2. 该用户尝试访问位于配置为通过 SAML 声明接受身份验证的目标站点上的目标资源。
  3. 通过一个或多个步骤(例如,重定向),该用户到达源站点的站点间传输服务(Intersite Transfer Service,简称 ITS)。WebLogic Server SAML 凭据映射提供程序可以充当 ITS。ITS 创建对用户进行身份验证的安全声明。
  4. 通过一系列 HTTP 交换,将用户浏览器传输到 SAML 目标站点上的声明使用者服务(Assertion Consumer Service,简称 ACS)。WebLogic Server SAML 标识声明提供程序可以充当 ACS。
  5. 通过协议交换,将有关源站点提供的 SAML 声明的信息以及与用户和所需目标关联的信息从源站点传达到目标站点。
  6. 目标站点的 ACS 将检查声明和目标信息,以确定是否允许对目标资源进行访问。如果访问得到授权,目标站点会将来自源站点的用户接受为通过身份验证的用户,从而实现基于 Web 的 SSO。

有关 WebLogic Server 如何实现 SAML 的一般概述,请参阅“了解 WebLogic 安全性”中的通过 SAML 的 Web 浏览器和 HTTP 客户端使用 WebLogic 安全框架单一登录。有关增加 Web Service 的安全性的详细信息,请参阅“WebLogic Server 的 Web Service 编程”中的配置安全

有关 SAML 的详细信息,请参阅 http://www.oasis-open.org

 


使用 SAML 进行单一登录:主要步骤

要通过 SAML 启用单一登录,请将 WebLogic Server 配置为 SAML 源站点和 SAML 目标站点。本部分将概述主要的步骤;有关详细信息,请参阅配置 SAML 源站点以进行单一登录配置 SAML 目标站点以进行单一登录

  1. 在安全领域中创建并配置 SAML 凭据映射提供程序。请参阅配置 SAML 凭据映射提供程序
  2. 配置服务器的源站点联合服务。
  3. 创建并配置要为其生成 SAML 声明的 SAML 依赖方。
  4. 如果要求 SAML 依赖方使用 SSL 证书连接到声明检索服务,请向 SAML 凭据映射提供程序的证书注册表中添加一些此类证书。
  5. 在安全领域中创建并配置 SAML 标识声明提供程序。请参阅配置 SAML 标识声明提供程序
  6. 配置服务器的目标站点联合服务。
  7. 创建并配置要使用其 SAML 声明的 SAML 声明方。
  8. 在由 SAML 标识声明提供程序维护的证书注册表中注册源站点的 SSL 证书,以此来建立信任。请参阅证书注册表

 


配置 SAML 源站点以进行单一登录

本部分描述如何将 WebLogic Server 配置为 SAML 源站点。

配置 SAML 凭据映射提供程序

在安全领域中,创建一个 SAML 凭据映射提供程序版本 2 实例。SAML 凭据映射提供程序不是默认安全领域的一部分。请参阅配置 SAML 凭据映射提供程序

使用发行方 URI、名称限定符和其他特性将 SAML 凭据映射提供程序配置为一个 SAML 颁发机构。

配置源站点联合服务

将 WebLogic Server 实例配置为 SAML 源站点的过程受 FederationServicesMBean 控制。使用 WebLogic 脚本工具或通过管理控制台的“环境: 服务器: ServerName: 配置: 联合服务: SAML 1.1 源站点”页可访问 FederationServicesMBean。请参阅“管理控制台联机帮助”中的配置 SAML 源服务

按以下方式配置 SAML 源站点特性:

配置依赖方

SAML 依赖方是依赖于 SAML 源站点所生成的 SAML 声明信息的实体。可以为每个依赖方单独配置 WebLogic Server 生成 SAML 声明的方式,也可以使用由联合服务源站点建立的默认方式来生成声明。

可以在管理控制台的“安全领域: RealmName: 提供程序: 凭据映射器: SAMLCredentialMapperName: 管理: 依赖方”页上配置依赖方。请参阅“管理控制台帮助”中的创建 SAML 依赖方配置 SAML 依赖方

也可以使用 WebLogic 脚本工具配置依赖方。请参阅使用 WLST 配置依赖方和声明方

配置支持的配置文件

在配置 SAML 依赖方时,可以指定对工件配置文件或 POST 配置文件的支持,以实现 SAML SSO。还可以将依赖方配置为支持 WSS/Holder-of-Key 或 WSS/Sender-Vouches 配置文件,以确保 Web Service 安全。请确保配置对 SAML 目标站点所支持的配置文件的支持。

如果支持 POST 配置文件,则可为依赖方创建要在 POST 配置文件声明中使用的形式,并在“POST 形式”特性中设置此形式的路径名。

声明使用者参数

对于每个 SAML 依赖方,可以配置一个或多个将在重定向到目标站点时添加到 ACS URL 中的可选查询参数(例如,合作伙伴 ID)。对于 POST 配置文件而言,在使用默认的 POST 形式时,这些参数将作为形式变量包含。如果使用自定义 POST 形式,则这些参数将作为名称和值的映射来使用,但可能会也可能不会将此形式构造成在已发布数据中包括这些参数。

替换默认声明存储

WebLogic Server 使用简单的声明存储来维护已生成声明的持久性。可以将此声明存储替换为实现 weblogic.security.providers.saml.AssertionStoreV2 的自定义声明存储类。使用 FederationServicesMBean.AssertionStoreClassName 特性将 WebLogic Server 配置为使用自定义声明存储类,而不使用默认类。可以使用 FederationServicesMBean.AssertionStoreProperties 特性对将传递给自定义声明存储类的 initStore() 方法的属性进行配置。可以在管理控制台的“环境: 服务器: ServerName: 配置: 联合服务: SAML 1.1 源站点”页上配置这些特性。

 


配置 SAML 目标站点以进行单一登录

本部分描述如何将 WebLogic Server 配置为 SAML 目标站点。

配置 SAML 标识声明提供程序

在安全领域中,创建并配置一个 SAML 标识声明提供程序版本 2 实例。SAML 标识声明提供程序不是默认安全领域的一部分。请参阅配置 SAML 标识声明提供程序

配置目标站点联合服务

在将 WebLogic 配置为 SAML 目标站点之前,必须先在安全领域中创建 SAML 标识声明提供程序版本 2 实例。将 WebLogic Server 实例配置为 SAML 目标站点的过程受 FederationServicesMBean 控制。可以使用 WebLogic 脚本工具或通过管理控制台的“环境: 服务器: ServerName: 配置: 联合服务: SAML 1.1 目标站点”页来访问 FederationServicesMBean

按以下方式配置 SAML 目标站点特性。

启用 SAML 目标站点

通过将“已启用目标站点”设置为 True 可使 WebLogic Server 实例充当 SAML 目标站点。

设置声明使用者 URI

设置 SAML 标识使用者服务的 URI。该 URL 用于接收来自源站点的声明,以便目标站点可以使用这些声明来对用户进行身份验证。依赖方的配置中也指定了声明使用者 URI。

配置声明使用者服务的 SSL

通过将 FederationServicesMBean.acsRequiresSSL 设置为 True 可以要求所有对声明使用者服务的访问都使用 SSL。

添加 SSL 客户端标识证书

SAML 目标站点使用可信证书来签署 POST 配置文件响应。将该证书添加到密钥库并输入将用于访问证书的凭据(别名和密码)。

配置一次性使用策略和用过的声明缓存或自定义声明缓存

可以要求每个 POST 配置文件声明最多只能使用一次。WebLogic Server 维护用过的声明的缓存,以便它能支持声明的一次性使用策略。可以将该声明缓存替换为实现 weblogic.security.providers.saml.SAMLUsedAssertionCache 的自定义声明缓存类。使用 FederationServicesMBean.SAMLUsedAssertionCache 特性将 WebLogic Server 配置为使用自定义声明缓存类,而不是使用默认类。可以使用 FederationServicesMBean.UsedAssertionCacheProperties 特性对将传递给自定义声明缓存类的 initCache() 方法的属性进行配置。可以在管理控制台的“环境: 服务器: ServerName: 配置: 联合服务: SAML 1.1 目标站点”页上配置这些特性。

配置 POST 配置文件的接收方检查

可以要求 SAML 响应的接收方必须与 HTTP 请求中 URL 匹配。通过设置“已启用 POST 接收方检查”特性可以实现此目的。

配置声明方

SAML 声明方是一个可信的 SAML 颁发机构(能够以 SAML 声明形式创建具有权威性的声明安全信息的实体)。可以使用管理控制台中的“安全领域: RealmName: 提供程序: 凭据映射器: SAMLCredentialMapperName: 管理: 声明方”页配置声明方。请参阅“管理控制台联机帮助”中的创建 SAML 声明方配置 SAML 声明方

也可以使用 WebLogic 脚本工具配置声明方。请参阅使用 WLST 配置依赖方和声明方

配置支持的配置文件

在配置 SAML 声明方时,可以指定对工件配置文件或 POST 配置文件的支持,以实现 SAML SSO。还可以将声明方配置为支持 WSS/Holder-of-Key 或 WSS/Sender-Vouches 配置文件,以确保 Web Service 安全。

配置源站点 ITS 参数

对于每个 SAML 声明方,可以配置零个或多个将在重定向到源站点时添加到 ITS URL 中的可选查询参数(例如,合作伙伴 ID)。

使用 WLST 配置依赖方和声明方

SAML 合作伙伴(依赖方和声明方)在注册表中维护。可以使用 WebLogic 管理控制台或 WebLogic 脚本工具配置 SAML 合作伙伴。以下示例说明如何在联机模式下使用 WLST 配置两个依赖方。

清单 7-1 使用 WLST 创建依赖方
connect('weblogic','weblogic','t3://localhost:7001')
rlm=cmo.getSecurityConfiguration().getDefaultRealm()
cm=rlm.lookupCredentialMapper('samlv2cm')
rp=cm.newRelyingParty()
rp.setDescription('test post profile')
rp.setProfile('Browser/POST')
rp.setAssertionConsumerURL('http://domain.example.com:7001/saml_destination/acs')
rp.setAssertionConsumerParams(array(['APID=ap_00001'],String))
rp.setSignedAssertions(true)
rp.setEnabled(true)
cm.addRelyingParty(rp)
rp=cm.newRelyingParty()
rp.setDescription('test artifact profile')
rp.setProfile('Browser/Artifact')
rp.setAssertionConsumerURL('http://domain.example.com:7001/saml_destination/acs')
rp.setAssertionConsumerParams(array(['APID=ap_00002'],String))
rp.setARSUsername('foo')
rp.setARSPassword('bar')
rp.setSSLClientCertAlias('demoidentity')
rp.setEnabled(true)
cm.addRelyingParty(rp)
disconnect()
exit()

以下示例说明如何编辑现有的声明方。此示例使用声明方 ID 获取声明方并设置声明检索 URL。

清单 7-2 使用 WLST 编辑声明方
connect('weblogic','weblogic','t3://localhost:7001')
rlm=cmo.getSecurityConfiguration().getDefaultRealm()
ia=rlm.lookupAuthenticationProvider('samlv2ia')
ap=ia.getAssertingParty('ap_00002')
ap.setAssertionRetrievalURL('https://hostname:7002/samlars/ars')
ia.updateAssertingParty(ap)
disconnect()
exit()

  返回顶部       上一页  下一页