7.4. 验证接收的凭证

概述

在服务器端,您可以通过使用 Apache CXF 运行时注册回调处理器来验证收到的凭证是否是身份验证。您可以自行编写自定义代码来执行凭据验证,也可以实施与第三方企业安全系统(如 LDAP 服务器)集成的回调处理器。

在 Blueprint XML 中配置服务器回调处理器

要配置服务器回调处理程序,以验证从客户端接收的 UsernameToken 凭据,请在服务器的 Blueprint XML 配置中设置 security.callback-handler 属性,如下所示:

<beans ... >
    <jaxws:endpoint
       id="UserNameOverTransport"
       address="https://localhost:9001/UserNameOverTransport"
       serviceName="interop:PingService10"
       endpointName="interop:UserNameOverTransport_IPingService"
       implementor="interop.server.UserNameOverTransport"
       depends-on="tls-settings">

       <jaxws:properties>
            <entry key="security.username" value="Alice"/>
            <entry key="security.callback-handler" value="interop.client.UTPasswordCallback"/>
        </jaxws:properties>

    </jaxws:endpoint>
    ...
</beans>

在前面的示例中,回调处理程序由 UT PasswordCallback 类实施

实施回调处理器以检查密码

要实现用于检查服务器端的回调处理程序,请实施 javax.security.auth.callback.CallbackHandler 接口。为服务器实施 回调处理程序 接口的一般方法与为客户端实施 回调处理程序 类似。给服务器端返回的密码的解释有所不同,但是:将来自回调处理器的密码与接收的客户端密码进行比较,以验证客户端的凭据。

例如,您可以使用 例 7.2 “UsernameToken 密码的回调处理程序” 中显示的示例实现来获取服务器端的密码。在服务器端,WSS4J 运行时将从回调中获取的密码与接收客户端凭据中的密码进行比较。如果两个密码匹配,则成功验证凭据。

对服务器回调处理程序的更真实的实现将涉及编写与用于存储安全数据的第三方数据库的集成(例如,与 LDAP 服务器集成)。