SAML 的 Web Service 客户机令牌高速缓存
当初次请求 SAML 令牌时,Web service 运行时环境将自动对 SAML 令牌进行高速缓存。由于该自动客户机令牌高速缓存功能,后续 Web service 请求可以使用来自先前请求的 SAML 令牌。
SAML 的 Web service 客户机令牌高速缓存使 Web service 客户机在访问业务服务时能够复用 SAML 令牌。复用有效 SAML 令牌可减少安全性令牌服务 (STS) 的流量,还可降低发送 WS-Trust 请求消息的性能影响。对于令牌,需要考虑几个要求才能被视为有效,继而可用于高速缓存和复用。
要能够复用 SAML 令牌,令牌的到期时间必须等于或大于当前时间。 在将令牌到期时间与当前时间进行比较时,会向当前时间添加一个高速缓存缓冲,以便令牌在发送后不会立即到期。
此外,仅当令牌再次发送到同一个业务服务时,令牌才有效。WebSphere® Application Server 中的 SAML 功能不会验证 SAML 令牌的 AudienceRestriction 条件。因此,确保将 SAML 令牌复用于正确受众的实用方法是:仅对最初使用令牌的同一 Web service 复用令牌。如果断言包含 OneTimeUse 断言,那么不会对 SAML 令牌进行高速缓存。
要利用 SAML 令牌高速缓存,应用程序和 SAML 令牌必须满足以下需求:
- SAML 令牌必须具有相对较长的到期时间:在第一个请求完成之后在令牌生存期中至少剩余 5 分钟。WS-Security 运行时环境将针对预定义高速缓存缓冲来验证高速缓存的 SAML 令牌到期时间。
仅当剩余令牌生存期大于缓冲值时,高速缓存的令牌才有效。缺省缓冲值为 5 分钟。
此值是使用定制属性 cacheCushion 来配置的。
要覆盖缺省高速缓存缓冲,请编辑 SAML 令牌生成器的定制属性 CallbackHandler。添加 cacheCushion 属性并设置高速缓存缓冲值(以毫秒计)。如果高速缓存的 SAML 令牌生存期在高速缓存缓冲限制之内,那么将请求新的 SAML 令牌。
例如,可以将高速缓存缓冲更改为 3 分钟或 180000 毫秒。
定制属性名 值 cacheCushion 180000 - SAML 令牌不能包含 OneTimeUse 断言。
- 如果 SAML 令牌已加密,请确保 STS 在已加密令牌的外部传播令牌到期时间,并确保 SAML 令牌不包含 OneTimeUse 断言。
当不希望将同一 SAML 令牌复用于后续请求时,您可以使用定制属性 cacheToken 来禁用客户端 SAML 令牌高速缓存。要禁用客户端 SAML 令牌高速缓存,请在 SAML 令牌生成器的 CallbackHandler 中修改定制属性。添加 cacheToken 属性并将值设置为 false。
定制属性名 | 值 |
---|---|
cacheToken | false |