SAML Web 单点登录 (SSO) 信任关联拦截器 (TAI) 定制属性
下列各表列示安全性断言标记语言 (SAML) 信任关联拦截器 (TAI) 的定制属性。您可以使用管理控制台在 SAML TAI 的定制属性面板中定义这些属性。
为了指定用于标识每个可能存在的单点登录 (SSO) 服务提供程序 (SP) 伙伴的唯一属性名称,在属性名称中嵌入了 sso_<id>,用于将每个 SSO 伙伴的相关属性分组到一起。sso_<id> 按顺序针对每个 SSO 服务提供程序伙伴进行编号。
- 全局属性 - 这些属性适用于所有针对 SAML TAI 配置的 SSO 伙伴。
- IdP 属性 - 这些属性适用于针对 SAML TAI 配置的身份提供程序。为了指定用于标识每个身份提供程序伙伴的唯一属性名称,在属性名称中嵌入了 idp_<id>,用于将每个 SSO IdP 伙伴的相关属性分组到一起。
- 服务提供程序属性 - 这些属性适用于服务提供程序,并且针对每个 SS0 服务提供程序伙伴分组到唯一的 sso_<id> 之下。
下表描述全局 SAML TAI 定制属性:
属性名 | 值 | 描述 |
---|---|---|
targetUrl | 可以指定任何 URL 值。 | 此属性由 sso_<id>.sp.targetUrl 覆盖。如果未接收到来自 IdP 的 RelayState,那么在成功验证 SAMLResponse 之后,这是缺省的目标 URL。 |
useRelayStateForTarget | 可以指定下列其中一个值:
|
此属性由 sso_<id>.sp.useRelayStateForTarget 覆盖。此属性用来指示是否应该将 RelayState 用作目标 URL。 |
allowedClockSkew | 可以指定任何正整数。缺省值为 3 分钟。 | 此属性由 sso_<id>.sp.allowedClockSkew 覆盖。此属性用来指定验证 SAML 令牌时允许的时钟偏差(以分钟计)。 |
enforceTaiCookie | 可以指定下列其中一个值:
|
此属性由 sso_<id>.sp.enforceTaiCookie 覆盖。此属性用来指示 SAML TAI 是否应检查 LTPA Cookie 是否映射到针对 SSO 伙伴创建的主体集。 |
preventReplayAttackScope | 此属性没有缺省值。您可以指定以下值:
|
缺省情况下,SAML TAI 使用分发高速缓存来存储 SAML 断言标识,以阻止重放攻击。如果将此属性设置为 server,那么 SAML TAI 会改为使用本地高速缓存。 |
replayAttackTimeWindow | 可以指定任何整数值。缺省值为 30。 | 此属性指定一个时间长度(以分钟计),如果 TAI 接收到两个相同 SAML 令牌的间隔时间小于此值,那么将拒绝第二个请求。另请参阅 sso_<id>.sp.preventReplayAttack。 |
retryOnceAfterTrustFailure | 可以指定下列其中一个值:
|
将此属性设置为 true 可使运行时在信任验证失败之后重新装入信任库。 这允许在运行应用程序服务器时使用新的 IdP 证书来更新信任库。 |
redirectToIdPonServerSide | 可以指定下列其中一个值:
|
此属性由 sso_<id>.sp.redirectToIdPonServerSide 覆盖。此属性用于指示 TAI 应该重定向到 IdP 本身。将此属性设置为 false 以执行客户端重定向。 如果重定向时丢失 URL 片段,请将此属性设置为 false;TAI 之后会执行客户端重定向。 |
下表描述 IdP SAML TAI 定制属性:
属性名 | 值 | 描述 |
---|---|---|
sso_<id>.idp_<id>.SingleSignOnUrl | 可以指定任何 URL 值。 | 此定制属性指定 IdP 的 SSO 服务的 URL。 |
sso_<id>.idp_<id>.allowedIssuerDN | 此定制属性没有缺省值。 | 此定制属性指定能够对 IdP 发送的 SAML 令牌进行签名的证书的主题 DN。如果 SAML 令牌并非由此证书进行签名,那么将被拒绝。如果指定了此属性,那么 sso_<id>.sp.wantAssertionSigned 定制属性必须是 true。当信任库中存在签署者证书的签发者时,请使用此属性,而不要使用 IdP 的签署者证书。这将防止允许所有签署者使用由同一个签发者签发的证书。 |
sso_<id>.idp_<id>.allowedIssuerName | 此定制属性没有缺省值。 | 此定制属性指定 SAML 令牌中的 Issuer 元素 <saml:Issuer> 的值。如果从 IdP 接收到的 SAML 令牌中的 Issuer 与此值不匹配,那么该令牌将被拒绝。 |
下表描述服务提供程序 SAML TAI 定制属性:
属性名 | 值 | 描述 |
---|---|---|
sso_<id>.sp.acsUrl | 此属性没有缺省值。可以指定下列其中一个值:
|
这是每个 sso_<id> 的唯一必需属性。此属性指定 ACS 或业务应用程序的 URL。 如果需要有适用于 SAML 工作流程的多个类似入口点,那么您可以在字符串末尾处使用通配符指定 URL,而不是此属性的特定 URI 模式。例如:
|
sso_<id>.sp.cookiegroup | 此属性没有缺省值。 | 此属性指定将添加到配置的 SAML SSO 伙伴的 ltpa cookie 的标记。收到带 ltpa cookie 的 Web 请求时,ltpa cookie 仅在标记匹配此值时有效 |
sso_<id>.sp.EntityID | 缺省情况下,此属性设置为 sso_<id>.sp.aclUrl 的值。 | 此属性用来验证 SAML 断言中的 AudienceRestriction。 |
sso_<id>.sp.targetUrl | 此属性没有缺省值。 | 此属性指定目标应用程序的 URL。当客户机请求中不存在 RelayState 时,将使用此属性。 |
sso_<id>.sp.useRelayStateForTarget | 可以指定下列其中一个值:
|
此属性指定是否应该将客户机请求中接收到的 RelayState 值用作目标应用程序的 URL。如果此属性设置为 false,那么 sso_<id>.sp.targetUrl 属性将用作目标应用程序的 URL。 |
sso_<id>.sp.login.error.page | 此属性没有缺省值。 | 此属性指定要将未经认证的客户机请求重定向到的错误页面、IdP 登录页面或定制映射类。 如果在此定制属性上指定了定制映射类,那么必须将包含定制类的 .jar 文件放置在 (WAS_HOME)/lib 或 (WAS_HOME)/lib/ext 目录中。 |
sso_<id>.sp.acsErrorPage | 此属性没有缺省值。 | 此属性用于覆盖 sso_<id>.sp.login.error.page。 |
sso_<id>.sp.allowedClockSkew | 此属性没有缺省值。 | 此属性指定对 IdP 发送的 SAML 令牌的令牌到期时间添加的时间(以分钟计)。 |
sso_<id>.sp.trustStore | 此属性没有缺省值。 | 此属性指定用于验证 SAML 签名的信任库。它指定受管密钥库的名称。 |
sso_<id>.sp.trustAnySigner | 可以指定下列其中一个值:
|
此属性指定是否对 SAML 令牌的签署者证书进行信任验证。如果此属性设置为 true,那么将信任任何签署者证书。 |
sso_<id>.sp.keyStore | 需要此属性来接收和处理 EncryptedAssertions,并且此属性没有缺省值。 | 此属性指定一个受管密钥库的名称,该密钥库包含用于对经过加密的 SAML 断言进行解密的专用密钥。 示例:
|
sso_<id>.sp.keyName | 需要此属性来接收和处理 EncryptedAssertions,并且此属性没有缺省值。 | 此属性指定用于对 SAML 断言进行解密的密钥的名称。 |
sso_<id>.sp.keyPassword | 需要此属性来接收和处理 EncryptedAssertions,并且此属性没有缺省值。 | 此属性指定用于对 SAML 断言进行解密的密钥的密码。 |
sso_<id>.sp.keyAlias | 需要此属性来接收和处理 EncryptedAssertions,并且此属性没有缺省值。 | 此属性指定用于对 SAML 断言进行解密的密钥的别名。 |
sso_<id>.sp.wantAssertionsSigned | 可以指定下列其中一个值:
|
如果此属性设置为 false,那么不需要对 SAML 断言进行签名,并且不会验证签名。 |
sso_<id>.sp.preserveRequestState | 可以指定下列其中一个值:
|
此属性指定服务提供程序将客户机请求重定向到 IdP 登录时,是否需要保存客户机状态并在客户机请求完成后复原该状态。 |
sso_<id>.sp.enforceTaiCookie | 可以指定下列其中一个值:
|
此属性用来指示 SAML TAI 是否应检查 LTPA Cookie 是否映射到针对 SSO 伙伴创建的主体集。 |
sso_<id>.sp.realmName | 这可以是任意字符串值。缺省情况下,此属性设置为 SAML 签发者名称。 | 此属性指定任意 SAML 属性,并与 realmNameRange 配合使用。此属性的值用作主体集领域。如果 realmNameRange 指定的领域列表未包含此领域,那么将拒绝此领域。 |
sso_<id>.sp.realmNameRange | 此属性没有缺省值。 | 此属性指定允许的领域名称的列表,并与 realmNameRange 配合使用。请参阅 sso_<id>.sp.realmName 的描述。 |
sso_<id>.sp.retryOnceAfterTrustFailure | 可以指定下列其中一个值:
|
将此属性设置为 true 可使运行时在信任验证失败之后重新装入信任库。 这允许在运行应用程序服务器时使用新的 IdP 证书来更新信任库。 |
sso_<id>.sp.principalName | 这可以是任意字符串值。缺省情况下,此属性设置为主体集的名称标识。 | 此属性指定任意 SAML 属性。此属性的值用作主体集主体。 |
sso_<id>.sp.uniqueId | 这可以是任意字符串值。缺省情况下,此属性设置为主体集的名称标识。 | 此属性指定任意 SAML 属性。此属性的值用作主体集的唯一标识。 |
sso_<id>.sp.groupName | 此属性没有缺省值。 | 此属性指定任意 SAML 属性。此属性的值用作主体集中的组。 |
sso_<id>.sp.defaultRealm | 可以指定下列其中一个值:
|
此定制属性指定是使用 SAML 断言中的 Issuer 还是 NameQualifier 作为缺省领域。 |
sso_<id>.sp.useRealm | 此属性没有缺省值。 | 此属性指定领域名称,并用来覆盖缺省领域。此属性还覆盖 realmName 属性。 |
sso_<id>.sp.idMap | 可以指定下列其中一个值:
|
此属性指定将 SAML 令牌映射到主体集的方式。 |
sso_<id>.sp.groupMap | 可以指定下列其中一个值:
|
此属性与 IDAssertion 配合使用,并指定将 SAML 令牌映射到组的方式。 |
sso_<id>.sp.userMapImpl | 此属性没有缺省值。 | 此属性指定定制用户映射模块类的名称。此属性用来将 SAML 令牌中的用户标识映射到本地用户注册表中存在的另一个用户标识。 该定制映射类必须实现 com.ibm.wsspi.security.web.saml.UserMapping 接口。必须将包含定制类的 .jar 文件放置在 (WAS_HOME)/lib 或 (WAS_HOME)/lib/ext 目录中。 |
sso_<id>.sp.X509PATH | 此属性没有缺省值。 | 此属性指定证书库,用于存储验证 SAML 签名时使用的中间证书。 |
sso_<id>.sp.CRLPATH | 此属性没有缺省值。 | 此属性指定证书库,用于存储验证 SAML 签名时使用的证书撤销列表 (CRL)。 |
sso_<id>.sp.filter | 此属性没有缺省值。 | 此属性用来指定针对 HTTP 请求检查的条件,以确定是否选择 SAML Web SSO 伙伴处理该 HTTP 请求。有关此属性的更多信息,请参阅“SAML TAI 过滤器属性”一节。 |
sso_<id>.sp.preventReplayAttack | 可以指定下列其中一个值:
|
此属性用来指定 SAML TAI 是否应该阻止在客户机请求中发送两个相同的 SAML 令牌。此属性与全局属性 replayAttackTimeWindow 配合使用。 |
sso_<id>.sp.preventReplayAttackScope | 此属性没有缺省值。您可以指定以下值:
|
缺省情况下,SAML TAI 使用分发高速缓存来存储 SAML 断言标识,以阻止重放攻击。如果将此属性设置为 server,那么 SAML TAI 会改为使用本地高速缓存。 |
sso_<id>.sp.trustedAlias | 此属性没有缺省值。 | 如果指定了属性,那么仅使用此别名指定的密钥来验证 SAML 断言中的签名。如果 SAMLResponse 的传入 SAML 断言中的签名未包含 KeyInfo 元素,请指定此属性以解析 KeyInfo 元素。 |
sso_<id>.sp.redirectToIdPonServerSide | 可以指定下列其中一个值:
|
此属性用于指示 TAI 应该重定向到 IdP 本身。如果重定向时丢失 URL 片段,请将此属性设置为 false;TAI 之后会执行客户端重定向。 |
SAML TAI 过滤器属性
客户机直接调用受保护的服务提供者应用程序时,将使用 SAML TAI 过滤器属性 sp.filter,而不会向 IdP 进行认证。此过滤器属性通常与 sp.login.error.page 属性配合使用,以便将未经认证的客户机请求重定向到 sp.login.error.page 属性指定的 URL 地址。 sp.filter 属性不适用于 SAMLResponse。SAMLResponse 中的请求 URL 将根据 sp.acsURL 进行评估。
- 必需的输入 - 输入元素通常指定 HTTP 头名称,但也可以使用 request-url 和 remote-address 作为特殊元素
- 运算符 - 运算符元素指定下列其中一个值:==、!=、%=、^=、< 和 >
- 比较值 - 此元素通常指定一个字符串,但也允许指定 IP 地址范围
这些条件按从左到右顺序根据比较值的指定方式进行求值。如果 HTTP 请求满足某个 SSO 服务提供程序伙伴指定的所有过滤条件,那么将选择该 SSO 服务提供程序伙伴处理该 HTTP 请求。
输入元素用于标识要从 HTTP 请求中抽取的请求头字段,并根据指定的运算符将该字段的值与过滤器属性中指定的值进行比较。如果输入元素所标识的头字段在该 HTTP 请求中不存在,那么认为不满足该条件。任何标准的 HTTP 请求头字段都可以用作过滤条件中的输入元素。有关有效头的列表,请参阅 HTTP 规范。
- request-url - 此输入的比较值将与客户机应用程序用于发出请求的 URL 地址进行比较
- remote-address - 此输入的比较值将与发送 HTTP 请求的客户机应用程序的 TCP/IP 地址进行比较
示例
sso_1.sp.filter=From==samluser@xyz.com
在这种情况下,如果客户机请求包含值为
samluser@xyz.com 的 HTTP 头字段 From,那么 SAML TAI 将选择这个
sso_1 过滤器的 SSO 服务提供程序伙伴来处理该客户机请求。sso_2.sp.filter=request-url%=ivtlanding.jsp
在这种情况下,如果客户机调用的目标应用程序的
URL 包含字符串 ivtlanding.jsp,那么 SAML TAI 将选择这个 sso_2
过滤器的 SSO 伙伴来处理该客户机请求。sso_3.sp.filter=applicationNames==DefaultApplication
在这种情况下,如果客户机应用程序调用的目标应用程序名为
DefaultApplication,那么 SAML TAI 将选择这个 sso_3 过滤器的 SSO 伙伴来处理该客户机请求。操作员 | 条件 | 示例 |
---|---|---|
== | 此运算符指定完全匹配。输入元素必须与比较值相等。 | From==jones@my.company.com |
%= | 此运算符指定部分匹配。输入元素包含比较值。 | user-agent%=IE 6request-url%=company.com/urlApp1 |
^= | 输入元素包含其中一个比较值。这是可与 | 运算符进行组合的唯一运算符。 | request-url^=urlApp1|urlApp2| urlApp3 |
!= | 输入元素不包含比较值。 | request-url!=test105 |
> | 输入元素大于比较值。 | remote-address>192.168.255.130 |
< | 输入元素小于比较值。 | remote-address<192.168.255.135 |
; | 逻辑 AND 运算符 | request-url!=test105;From==jones@my.company.com5 |