Web Service 认证、授权以及安全传输故障诊断技巧
基于 Web Services for Java™ 平台企业修订版 (Java EE) 规范开发和实现 Web Service。在您保护 Web Service 时,需要考虑认证和授权故障诊断的几个事项。
基于 Web Services for Java 平台企业修订版 (Java EE) 规范开发和实现这些 Web Service。本主题讨论在您保护 Web Service 时对认证、授权以及传输问题进行故障诊断的注意事项。
使用 HTTPS 传输协议来指定远程 WSDL
如果“基于 XML 的 Web Service 的 Java API”(JAX-WS) 客户机应用程序指定需要 HTTPS 安全通信的 WSDL 位置的远程地址,且您未完成 SSL 配置,那么会出现异常。如果使用 HTTPS 传输协议来指定 WSDL URL,那么必须在创建客户机实例之前完成 SSL 配置。要配置 SSL,请将 com.ibm.SSL.ConfigURL 系统属性设为 SSL 配置的名称。
@WebServiceClient(name = "SampleService", targetNamespace = "http://jaxws.sample.websphere.ibm.com/",
wsdlLocation = "https://localhost:9443/Sample/SampleServicePort?WSDL")
public class SampleService
extends Service
{
private final static URL SAMPLESERVICE_WSDL_LOCATION;
static {
URL url = null;
try {
url = new URL("https://localhost:9080/Sample/SampleService?WSDL");
} catch (MalformedURLException e) {
e.printStackTrace();
}
SAMPLESERVICE_WSDL_LOCATION = url;
}
...
}
要了解有关设置此系统属性的更多信息,请阅读“在 ssl.client.props 客户机配置中设置客户机的 SSL 配置”文档。
显示认证问询或授权故障
如果发生线程交换,您可能会遇到认证问询或权限故障。例如,应用程序可能创建新线程或者到 Servlet 的原始套接字连接可能会打开。Java EE 规范建议不使用线程交换,因为安全上下文信息存储在线程本地。发生线程交换时,已认证的标识未从线程本地传递到新的线程。因此,WebSphere® Application Server 将身份视为未经认证。如果您必须创建新线程,那么您必须将安全上下文传播到新的线程。但是,WebSphere Application Server 不支持此过程。
支持 Web Service 安全性的应用程序无法启动
[6/19/03 11:13:02:976 EDT] 421fdaa2 KeyStoreKeyLo E WSEC5156E: 在从
KeyStore 对象检索密钥时发生异常:java.security.UnrecoverableKeyException: 未正确填充给定的最终块
支持 Web Service 安全性的应用程序无法在 WebSphere Application Server V6.0.x 和 V5.0.2 之间进行互操作
支持 Web Service 安全性的应用程序无法在 WebSphere Application Server V6.0.x 和 V5.0.2 之间进行互操作。当应用程序尝试互操作时,显示“摘要不匹配”错误。XML 数字签名的规范化算法中存在错误,会在 V5.1 中修订。为使 Web Service 安全性能够在 WebSphere Application Server V6 和 V5.0.2 之间进行互操作,您必须更新 V5.0.2 应用程序服务器。要更新 V5.0.2 服务器,请访问 WebSphere Application Server 支持 Web 站点并下载 WebSphere Application Server V5.0.2 的最新修订包。