认证方法概述
WebSphere® Application Server 的 Web Service 安全性实现支持下列认证方法:BasicAuth、轻量级第三方认证 (LTPA)、数字签名和身份断言。
当 WebSphere Application Server 配置为使用 BasicAuth 认证方法时,发送方会在 SOAP 消息头的绑定文件中附加轻量级第三方认证 (LTPA) 令牌作为当前安全上下文或基本认证数据配置中的 BinarySecurityToken。Web Service 安全性消息接收方通过对照配置的用户注册表验证用户名和密码,来认证发送方。使用 LTPA 方法时,发送方附加它先前在 SOAP 消息头中接收到的 LTPA BinarySecurityToken。接收方通过验证 LTPA 令牌和令牌截止时间来认证发送方。借助数字签名认证方法,发送方将 BinarySecurityToken 从 X509 证书附加到 Web Service 安全性消息头,同时还附加消息体、时间戳记、安全性令牌或这三者的任意组合的数字签名。接收方通过使用已验证过证书的公用密钥来验证 X.509 证书和数字签名的有效性,从而对发送方进行认证。
身份断言认证方法与另三种认证方法不同。此方法基于信任关系建立发送方的安全凭证。例如,当中间服务器必须代表客户机从下游服务器调用服务,但是又没有客户机认证信息时,您就可使用身份断言认证方法。中间服务器可以与下游服务器建立信任关系,然后对同一下游服务器声明客户机标识。
- BasicAuth
- 数字签名
- 假设信任
当您使用 BasicAuth 和数字签名信任方式时,中间服务器会将它自己的认证信息传递到下游服务器以供认证。假设信任方式使用一些外部机制建立信任关系。例如,中间服务器可以通过与下游服务器的安全套接字层 (SSL) 连接和传输层客户机证书认证传递 SOAP 消息。
- 下游服务器验证中间服务器的认证信息。
- 下游服务器验证是否授权已认证的中间服务器进行身份断言。例如,中间服务器必须在下游服务器的信任列表中。
客户机标识可能由名称字符串、专有名称 (DN) 或 X.509 证书表示。客户机标识附加在 Web Service 安全性消息中仅有一个用户名、DN 的 UsernameToken 中,或在证书的 BinarySecurityToken 中。下表概述每个认证方法所需的安全性令牌的类型。
认证方法 | 安全性令牌 |
---|---|
BasicAuth | BasicAuth 需要具有 <wsse:Username> 和 <wsse:Password> 的 <wsse:UsernameToken>。 |
Signature | 签名需要 <ds:Signature> 和 <wsse:BinarySecurityToken>。 |
IDAssertion | 根据 <idType>,IDAssertion 需要具有<wsse:Username> 的 <wsse:UsernameToken> 或具有用于客户机标识的 X.509 证书的 <wsse:BinarySecurityToken>。根据 <trustMode>,此方法还需要其他安全性令牌:
|
LTPA | LTPA 需要 <wsse:BinarySecurityToken> 以及 LTPA 令牌。 |
<loginConfig xmi:id="LoginConfig_1052760331326">
<authMethods xmi:id="AuthMethod_1052760331326" text="BasicAuth"/>
<authMethods xmi:id="AuthMethod_1052760331327" text="IDAssertion"/>
<authMethods xmi:id="AuthMethod_1052760331336" text="Signature"/>
<authMethods xmi:id="AuthMethod_1052760331337" text="LTPA"/>
</loginConfig>
<idAssertion xmi:id="IDAssertion_1052760331336" idType="Username" trustMode="Signature"/>
<loginConfig xmi:id="LoginConfig_1051555852697">
<authMethods xmi:id="AuthMethod_1051555852698" text="IDAssertion"/>
</loginConfig>
<idAssertion xmi:id="IDAssertion_1051555852697" idType="Username" trustMode="Signature"/>

发送方安全性处理程序调用 javax.security.auth.callback.CallbackHandler 接口的实现的 handle() 方法。javax.security.auth.callback.CallbackHandler 接口创建安全性令牌并将它传递回到发送方安全性处理程序。发送方安全性处理程序根据回调数组中的认证信息构造安全性令牌,并将安全性令牌插入 Web Service 安全性消息头中。
接收方安全性处理程序会将消息头中的令牌类型与部署描述符中配置的预期令牌类型进行比较。如果在 SOAP 消息的 Web Service 安全性头中没有找到预期的令牌类型,那么以SOAP 故障异常拒绝请求。否则,将使用令牌类型映射至 Java™ 认证和授权服务 (JAAS) 登录配置,以验证令牌。如果认证成功,那么创建 JAAS 主体集并与运行线程关联。否则以 SOAP 故障异常拒绝请求。