Sun Java System Application Server Enterprise Edition 8.2 管理指南

为消息安全性配置 Application Server

请求策略配置和响应策略配置的操作

下表显示了消息保护策略配置以及由 WS-Security SOAP 消息安全性提供者针对该配置所执行的最终消息安全性操作。

表 10–1 消息保护策略与 WS-Security SOAP 消息安全性操作的映射

消息保护策略 

最终的 WS-Security SOAP 消息保护操作 

auth-source="sender" 

此消息包含 wsse:Security 标头,此标头包含 wsse:UsernameToken(带有密码)。

auth-source="content" 

对 SOAP 消息主体的内容进行签名。此消息包含 wsse:Security,此标头包含显示为 ds:Signature 的消息主体签名。

auth-source="sender" 

auth-recipient="before-content" 

或 

auth-recipient="after-content" 

SOAP 消息主体的内容已加密并用最终的 xend:EncryptedData 替换。此消息包含 a wsse:Security 标头,此标头包含 wsse:UsernameToken(带有密码)xenc:EncryptedKeyxenc:EncryptedKey 包含用于对 SOAP 消息主体进行加密的密钥。此密钥在收件人的公共密钥中加密。

auth-source="content" 

auth-recipient="before-content" 

SOAP 消息主体的内容已加密并用最终的 xend:EncryptedData 替换。对 xenc:EncryptedData 进行签名。此消息包含 a wsse:Security 标头,此标头包含 xenc:EncryptedKeyds:Signaturexenc:EncryptedKey 包含用于对 SOAP 消息主体进行加密的密钥。此密钥在收件人的公共密钥中加密。

auth-source="content" 

auth-recipient="after-content" 

对 SOAP 消息主体的内容进行签名、加密,并用最终的 xend:EncryptedData 替换。此消息包含 wsse:Security 标头,此标头包含 xenc:EncryptedKeyds:Signaturexenc:EncryptedKey 包含用于对 SOAP 消息主体进行加密的密钥。此密钥在收件人的公共密钥中加密。

auth-recipient="before-content" 

或 

auth-recipient="after-content" 

SOAP 消息主体的内容已加密并用最终的 xend:EncryptedData 替换。此消息包含 a wsse:Security 标头,此标头包含 xen:EncryptedKeyxenc:EncryptedKey 包含用于对 SOAP 消息主体进行加密的密钥。此密钥在收件人的公共密钥中加密。

未指定策略。 

模块未执行任何安全操作。 

配置其他安全性工具

Application Server 使用在其 SOAP 处理层中集成的消息安全性提供者来实现消息安全性。消息安全性提供者取决于 Application Server 的其他安全性工具。

  1. 如果使用的 Java SDK 的版本早于 1.5.0,而且使用了加密技术,请配置 JCE 提供者。

  2. 配置 JCE 提供者中说明了如何配置 JCE 提供者。

  3. 如果使用了用户名令牌,请在必要时配置用户数据库。使用用户名/密码令牌时,必须配置适当的区域并为该区域配置适当的用户数据库。

  4. 管理证书和专用密钥(如有必要)。

完成之后

将 Application Server 的工具配置为供消息安全性提供者使用后,则可启用随 Application Server 一起安装的提供者,如启用消息安全性提供者中所述。

配置 JCE 提供者

J2SE 1.4.x 中包含的 Java 加密扩展 (JCE) 提供者不支持RSA 加密。由于由 WS-Security 所定义的 XML 加密通常是基于 RSA 加密,因此为了使用 WS-Security 来加密 SOAP 消息,您必须下载并安装支持 RSA 加密的 JCE 提供者。


注 –

RSA 是 RSA Data Security, Inc. 开发的公共密钥加密技术。RSA 缩略词分别代表该技术的三位发明者:Rivest、Shamir 和 Adelman。


如果是在 1.5 版的 Java SDK 中运行 Application Server,则已正确配置了 JCE 提供者。如果是在 1.4.x 版的 Java SDK 中运行 Application Server,您可以静态方式将 JCE 提供者添加为 JDK 环境的一部分,如下所示。

  1. 下载并安装 JCE 提供者 JAR(Java 归档)文件。

    通过以下 URL 可以获得支持 RSA 加密的 JCE 提供者的列表:http://java.sun.com/products/jce/jce14_providers.html

  2. 将 JCE 提供者 JAR 文件复制到 java-home/jre/lib/ext/ 中。

  3. 停止 Application Server。

    如果未停止 Application Server 而后来又在这一过程中重新启动了 Application Server,则 Application Server 将无法识别 JCE 提供者。

  4. 在任何一种文本编辑器中编辑 java-home/jre/lib/security/java.security 属性文件。将刚才下载的 JCE 提供者添加到此文件。

    java.security 文件包含添加此提供者的详细说明。通常,您需要在具有类似属性的某个位置处添加一行,其格式如下:


    security.provider.n=provider-class-name
    

    在本示例中,n 是 Application Server 评估安全性提供者时使用的优先级顺序。为刚才添加的 JCE 提供者将 n 设置为 2

    例如,如果您下载的是 Legion of the Bouncy Castle JCE 提供者,则应添加以下行。


    security.provider.2=org.bouncycastle.jce.provider.
       BouncyCastleProvider

    确保将 Sun 安全性提供者保持在最高优先级,值为 1。


    security.provider.1=sun.security.provider.Sun

    将其他安全性提供者的优先级调低,从而使每个优先级上只有一个安全性提供者。

    以下是提供所需 JCE 提供者并将现有提供者保持在正确位置的 java.security 文件的示例。


    security.provider.1=sun.security.provider.Sun
    security.provider.2=org.bouncycastle.jce.provider.
       BouncyCastleProvider
    security.provider.3=com.sun.net.ssl.internal.ssl.Provider
    security.provider.4=com.sun.rsajca.Provider
    security.provider.5=com.sun.crypto.provider.SunJCE
    security.provider.6=sun.security.jgss.SunProvider
  5. 保存并关闭文件。

  6. 重新启动 Application Server。