登录映射
在 ibm-webservices-bnd.xmi 扩展标记语言 (XML) 文件中找到的登录映射包含映射配置。此映射配置定义 Web Service 安全性处理程序如何把从消息头抽出的安全性令牌中所包含的令牌 <ValueType> 元素,映射至相应的认证方法。令牌 <ValueType> 元素包含在从 SOAP 消息头中抽取的安全性令牌中。
发送方端 Web Service 安全性处理程序基于部署描述符中指定的 <AuthMethods> 元素生成和附加安全性令牌。例如,如果认证方法是BasicAuth,那么发送方端安全处理程序生成并附加UsernameToken(带有用户名和密码)到 SOAP 消息头。Web Service 安全性运行时将 Java™ 认证和授权服务 (JAAS) javax.security.auth.callback.CallbackHandler 接口作为安全提供程序使用,以在客户机端(或当 Web Service 充当客户机时)生成安全性令牌。
发送方安全处理程序调用 javax.security.auth.callback.CallbackHandler 接口实现的handle()方法。 此实现创建安全性令牌并将它传递回到发送方安全处理程序。发送方安全处理程序根据回调数组中的认证信息构造安全性令牌。然后安全处理程序将安全性令牌插入 Web Service 安全性消息头中。
<loginBinding xmi:id="LoginBinding_1052760331526" authMethod="BasicAuth"
callbackHandler="com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler"/>
- com.ibm.wsspi.wssecurity.auth.callback.GUIPromptCallbackHandler
- 如果在登录绑定信息中没有定义基本认证数据(这与 HTTP 基本认证信息不同),那么前一个令牌类型就通过登录面板提示您输入用户名和密码。实现使用在登录绑定中定义的基本认证数据。将此 CallbackHandler 与 BasicAuth 认证方法一起使用。由于要提示您输入登录绑定信息,因此不要在服务器上使用此 CallbackHandler 实现。
- com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler
- 如果在登录绑定中没有定义基本认证数据(这与 HTTP 基本认证信息不同),那么实现就使用(stdin)中的标准提示您输入用户名和密码。实现使用在登录绑定中定义的基本认证数据。将此 CallbackHandler 实现与 BasicAuth 认证方法一起使用。由于要提示您输入登录绑定信息,因此不要在服务器上使用此 CallbackHandler 实现。限制: 如果您使用多线程客户机,并且有多个线程尝试同时读取标准输入,那么所有线程都将无法成功地获取用户名和密码信息。因此,您不能将 com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler 实现用于多线程客户机(因为多个线程可能同时尝试从标准输入获取数据)。
- com.ibm.wsspi.wssecurity.auth.callback.NonPromptCallbackHandler
- 此 CallbackHandler 实现不会提示。它宁可使用在登录绑定中定义的基本认证数据(这与 HTTP 基本认证信息不同)。此 CallbackHandler 实现旨在与 BasicAuth 认证方法一起使用。您必须在登录绑定信息中为此 CallbackHandler 实现定义基本认证信息。 当 Web Service 作为客户机运行并需要向下游调用发送基本认证 (<wsse:UsernameToken>) 时,您可使用此实现。
- com.ibm.wsspi.wssecurity.auth.callback.LTPATokenCallbackHandler
- CallbackHandler 从当前 WebSphere Application Server 安全上下文的 run as JAAS 主体集(调用主体集)生成轻量级第三方认证 (LTPA) 令牌。但是,如果在登录绑定信息中定义了基本认证数据(不是 HTTP 基本认证信息),那么实现就使用此基本认证数据和生成的 LTPA 令牌。必须为此 CallbackHandler 实现在登录绑定信息中定义令牌类型 URI 和令牌类型局部名值。标记值类型用于对请求发送方验证标记和请求接收方绑定配置。Web Service 安全性运行时将 LTPA 令牌作为二进制安全性令牌 (<wsse:BinarySecurityToken>) 插入消息 SOAP 头中。值类型是必需的。(请参阅 LTPA 获取更多信息)。将此 CallbackHandler 实现与 LTPA 认证方法一起使用。

- 在接收消息后,接收方 Web Service 安全性处理程序将(消息头中的)令牌类型与部署描述符中配置的预期令牌类型比较。
- Web Service 安全性处理程序从消息头抽出安全性令牌,并将令牌<ValueType>元素映射至相应的认证方法。映射配置在 ibm-webservices-bnd.xmi XML 文件的<loginMappings> 元素中定义。例如:
<loginMappings xmi:id="LoginMapping_1051977980074" authMethod="LTPA" configName="WSLogin"> <callbackHandlerFactory xmi:id="CallbackHandlerFactory_1051977980081" classname="com.ibm.wsspi.wssecurity.auth.callback.WSCallbackHandlerFactoryImpl"/> <tokenValueType xmi:id="TokenValueType_1051977980081" uri="http://www.ibm.com/websphere/appserver/tokentype/5.0.2" localName="LTPA"/> </loginMappings>
com.ibm.wsspi.wssecurity.auth.callback.CallbackHandlerFactory 接口是用于 javax.security.auth.callback.CallbackHandler 的工厂。
- Web Service 安全性运行时启动工厂实现类并通过设置方法将认证信息从 Web Service 安全性头传递到工厂类。
- Web Service 安全性运行时调用 newCallbackHandler() 方法获取 javax.security.auth.CallbackHandler 对象(它生成所需的安全性令牌)。
- 当安全处理程序接收到 LTPA BinarySecurityToken 时,它使用 WSLogin JAAS 登录配置和 newCallbackHandler() 方法验证安全性令牌。
如果在 SOAP 消息 Web Service 安全性头中没有找到预期的令牌类型,那么系统将因 SOAP 故障而拒绝请求。否则,使用令牌类型映射至 JAAS 登录配置,以验证标记。如果认证成功,那么创建 JAAS 主体集并与正在运行的线程关联。否则以 SOAP 故障拒绝请求。下表显示认证方法和 JAAS 登录配置。
表 1. 认证方法和 JAAS 登录配置. 认证方法映射至 JAAS 登录配置,以验证令牌。 认证方法 JAAS 登录配置 BasicAuth WSLogin 签名 system.wssecurity.Signature LTPA WSLogin IDAssertion system.wssecurity.IDAssertion 图.2 显示请求接收方消息进程中的接收方安全处理程序。图 2. 请求接收方 SOAP 消息进程缺省值 <LoginMapping> 在以下文件中定义:- 单元级别 ws-security.xml 和服务器级别 ws-security.xml 文件
- 客户机读取 ${install_dir}/properties/ws-security.xml 文件中的缺省绑定信息。
- 服务器运行时组件装入以下文件(如果他们存在):
- 单元级别 ws-security.xml 文件和服务器级别 ws-security.xml 文件。这两个文件在运行时中合并以形成一个有效的缺省绑定信息集合。
在 Base Application Server 上,服务器运行时组件仅装入服务器级别 ws-security.xml 文件。服务器端 ws-security.xml 文件和应用程序 Web Service 安全性绑定信息由管理控制台管理。可以在应用程序部署期间通过使用管理控制台指定绑定信息。Web Services 安全策略将在部署描述符扩展 (ibm-webservicesclient-ext.xmi) 中定义,而绑定存储在 IBM® 绑定扩展 (ibm-webservicesclient-bnd.xmi) 中。但是,${install_dir}/properties/ws-security.xml 文件定义客户机的缺省绑定值。如果在绑定文件中未指定绑定信息,那么运行时从缺省 ${install_dir}/properties/ws-security.xml 文件读取绑定信息。