身份断言认证方法
当使用身份断言 (IDAssertion) 认证方法时,生成的安全性令牌是包含一个 <wsse:Username> 元素的 <wsse:UsernameToken> 元素。
在请求发送方端,调用回调处理程序以生成安全性令牌。在请求接收方端,验证安全性令牌。 以下部分中描述这两个操作(令牌生成和令牌验证操作)。
身份断言令牌验证:
请求接收方从 SOAP 消息检索 IDAssertion 安全性令牌,并使用 Java™ 认证和授权服务 (JAAS) 登录模块验证此令牌。关于身份断言,需要的特殊处理是在将身份断言为正在运行的线程的已建立标识前建立信任。此特殊处理由部署描述符文件 ibm-webservices-ext.xmi 中的 <IDAssertion> 元素定义。如果所有验证检查都成功,那么将声明的标识设置为正在运行的线程的标识。如果验证失败,那么以 SOAP 故障异常拒绝请求。
在绑定文件的 <LoginMapping> 元素中指定 JAAS 登录配置。缺省绑定是在 ws-security.xml 文件中指定的。但是,您可以使用特定于应用程序的 ibm-webservices-bnd.xmi 文件重设这些绑定。配置信息由 CallbackHandlerFactory 和 ConfigName 组成。CallbackHandlerFactory 指定一个类名,该类用于创建 JAAS CallbackHandler 对象。WebSphere Application Server 提供 com.ibm.wsspi.wssecurity.auth.callback.WSCallbackHandlerFactoryImpl CallbackHandlerFactory 实现。ConfigName 指定 JAAS 配置名称条目。
WebSphere Application Server 在 security.xml 文件中搜索匹配的配置名称条目。如果未找到匹配的配置名称条目,它会搜索 wsjaas.conf 文件。WebSphere Application Server 提供了缺省配置条目 system.wssecurity.IDAssertion,它适用于身份断言认证方法。
ibm-webservices-ext.xmi 部署描述符文件中的 <IDAssertion> 元素指定在使用身份断言认证方法时所需的特殊处理。<IDAssertion> 元素由两个子元素组成:<IDType> 和 <TrustMode>。
- Username
- 专有名称 (DN)
- X.509 证书 (X.509 certificate)
当 <IDType> 是用户名时,将提供用户名令牌(例如,Bob)。此用户名被映射至用户注册表中的用户,并且是成功的信任验证后声明的标识。当 <IDType> 值是 DN 时,将提供包含专有名称(例如,cn=Bob Smith, o=ibm, c=us)的用户名令牌。此 DN 被映射至用户注册表中的用户,并且此用户是成功的信任验证后声明的标识。当 <IDType> 是 X509Certificate 时,将提供包含 X.509 证书的二进制安全性令牌,并从证书(例如,cn=Bob Smith, o=ibm, c=us)中提取 SubjectDN 值。此 SubjectDN 值被映射至用户注册表中的用户,并且此用户是成功的验证后声明的标识。
- 签名
- BasicAuth
- 不指定值
当 <TrustMode> 值为 Signature 时,验证签名。然后,签署者(例如 cn=IBM Authority, o=ibm, c=us)被映射为用户注册表中的标识(例如 IBMAuthority)。为确保声明权限是可信的,会对照可信标识的列表验证已映射的标识(例如 IBMAuthority)。当 <TrustMode> 元素是 BasicAuth 时,有一个含有用户名和密码的用户名令牌,这是声明权限的用户名和密码。
会验证用户名和密码。如果他们被成功验证,会对照可信标识的列表验证该用户名(例如 IBMAuthority)。如果没有为 <TrustMode> 指定值,则假设信任,并且不执行其他的信任验证。此类型的身份断言称为假设信任方式。仅在使用一些其他机制建立了信任的环境中才使用假设信任方式。
如果前述所有验证都是成功的,那么将已声明的标识(例如 Bob)设置为正在运行的线程的标识。如果有任何验证失败,那么以 SOAP 故障异常拒绝请求。