身份断言认证方法
使用身份断言(IDAssertion)身份验证方法时,生成的安全令牌是一个包含 <wsse:Username> 元素的 <wsse:UsernameToken> 元素。
在请求发送方端,调用回调处理程序以生成安全性令牌。 在请求接收方端,验证安全性令牌。 以下部分中描述这两个操作(令牌生成和令牌验证操作)。
身份断言令牌验证:
请求接收方从 SOAP 消息中检索 IDAssertion 安全性令牌,并使用 Java™ 认证和授权服务 (JAAS) 登录模块对其进行验证。 关于身份断言,需要的特殊处理是在将身份断言为正在运行的线程的已建立标识前建立信任。 这种特殊处理由部署描述符文件 ibm-webservices-ext.xmi 中的 <IDAssertion> 元素定义。 如果所有验证检查都成功,那么将声明的标识设置为正在运行的线程的标识。 如果验证失败,那么以 SOAP 故障异常拒绝请求。
JAAS 登录配置在绑定文件的 the<LoginMapping> 元素中指定。 缺省绑定是在 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>。
- 用户名
- 专有名称 (DN)
- X.509 证书
When <IDType> is 用户名, a username token (for example, Bob) is provided. 此用户名被映射至用户注册表中的用户,并且是成功的信任验证后声明的标识。 当 <IDType> 值为 DN 时,将提供一个包含区分名称的用户名标记(例如 cn=Bob Smith, o=ibm, c=us )。该 DN 映射到用户注册表中的一个用户,信任验证成功后,该用户就是所断言的身份。 当 <IDType> 为 X509Certificate 时,会提供一个包含 X509 证书的二进制安全令牌,并从证书中提取 SubjectDN 值(例如 cn=Bob Smith, o=ibm, c=us )。 此 SubjectDN 值被映射至用户注册表中的用户,并且此用户是成功的验证后声明的标识。
<TrustMode> 元素指定信任权限或声明权限如何提供信任信息。 受支持的值包括:- 特征符
- BasicAuth
- 未指定值
当 <TrustMode> 值为 Signature 时,验证签名。 然后,签署者(例如 cn=IBM Authority, o=ibm, c=us)被映射为用户注册表中的标识(例如 IBMAuthority)。 为确保声明权限是可信的,会对照可信标识的列表验证已映射的标识(例如 IBMAuthority)。 当 <TrustMode> 元素为 BasicAuth 时,有一个带有用户名和密码的用户名令牌,该用户名和密码是断言机构的用户名和密码。
会验证用户名和密码。 如果他们被成功验证,会对照可信标识的列表验证该用户名(例如 IBMAuthority)。 如果没有为 <TrustMode> 指定值,那么假设信任,并且不执行其他的信任验证。 此类型的身份断言称为假设信任方式。 仅在使用一些其他机制建立了信任的环境中才使用假设信任方式。
如果前述所有验证都是成功的,那么将已声明的标识(例如 Bob)设置为正在运行的线程的标识。 如果有任何验证失败,那么以 SOAP 故障异常拒绝请求。