使用 API 传播 SAML 令牌

SAML 传播功能对于跨多个服务器进行交互的应用程序很有用。传播功能将令牌信息从起源服务器向下游传播到其他服务器。

您可以使用管理命令来传播 SAML 令牌,或者使用 SAML 应用程序编程接口 (API) 以编程方式来传播 SAML 令牌。主题“传播 SAML 令牌”和“SAML 令牌传播方法”中描述了通过管理命令进行传播。

SAML 令牌的编程式传播是通过显式编程与使用 Web service 安全性运行时环境进行组合来实现的。 例如,您可以从 org.apache.axis2.jaxws.BindingProvider 对象中抽取 SAML 令牌。然后该令牌用于出站调用。在此示例中,由于不需要 WebSphere® 安全性,因此以编程方式传播 SAML 令牌允许您在应用程序级别开发 SAML 安全性。此外,可以使用任何协议向下游传达 SAML 令牌。

使用以下样本代码在完成第一个请求之后在客户端抽取 SAML 令牌。

创建 Dispatch 对象并调用请求:
javax.xml.ws.Dispatch dispatch = ...;
dispatch.invoke();
获取响应上下文并抽取 SAML 令牌:
Map<String, Object> responseContext = dispatch.getResponseContext();
 		SAMLToken samlToken = 
       (SAMLToken ) responseContext.get(com.ibm.wsspi.wssecurity.saml.config.SamlConstants.
    SAMLTOKEN_OUT_MESSAGECONTEXT);

以下样本代码说明如何对后续 Web service 请求复用 SAML 令牌。

Web service 客户机程序创建一个分派实例以调用服务:
javax.xml.ws.Dispatch dispatch = ...;
Web service 客户机随后使用此代码将 SAML 令牌传递到 Web service 安全处理程序:
Map<String, Object> requestContext = dispatch.getRequestContext();
     requestContext.put(com.ibm.wsspi.wssecurity.saml.config.SamlConstants.
     SAMLTOKEN_IN_MESSAGECONTEXT, samlToken);           

Web service 提供程序(接收方)可以使用以下代码从入局 Web service 请求中抽取 SAML 令牌。

从 requestContext 中抽取 SAMLToken:
Subject subject = (Subject) context.get(com.ibm.wsspi.wssecurity.core.Constants.WSSECURITY_TOKEN_WSSSUBJECT);
SAMLToken samlToken = null;
try {
  samlToken = (SAMLToken) AccessController.doPrivileged(
    new java.security.PrivilegedExceptionAction() {
      public Object run() throws java.lang.Exception {
        final java.util.Iterator authIterator = 
           subject.getPrivateCredentials(SAMLToken.class).iterator();

        if ( authIterator.hasNext() ) {
          final SAMLToken token = (SAMLToken) 
          authIterator.next();
          return token;
        }
        return null;
      }
    });
} catch (Exception ex) {
  // Error handling
}
  
抽取 SAML 属性:
List<SAMLAttribute> allAttributes;
allAttributes = ((SAMLToken) samlToken).getSAMLAttributes();

Web service 客户机运行时环境可以将 SAML 令牌进行高速缓存。 在应用程序中的后续客户机请求中,安全运行时环境将从高速缓存中检索 SAML 令牌以用于目标。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_samlapipropagate
文件名:cwbs_samlapipropagate.html