7.4. 验证接收的凭证
概述
在服务器端,您可以通过使用 Apache CXF 运行时注册回调处理器来验证收到的凭证是否是真实的。您可以自行编写自定义代码来执行凭据验证,或者您可以实施与第三方企业安全系统(如 LDAP 服务器)集成的回调处理程序。
在蓝图 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>
在上例中,回调处理程序由 UTPasswordCallback
类实施。
实施回调处理程序以检查密码
要实施用于检查服务器端密码的回调处理程序,请实施 javax.security.auth.callback.CallbackHandler
接口。为服务器实施 CallbackHandler
接口的一般方法与为客户端实施 CallbackHandler
类似。提供给服务器端返回的密码的解释不同,但回调处理程序中的密码会与接收的客户端密码进行比较,以验证客户端的凭据。
例如,您可以使用 例 7.2 “UsernameToken Passwords 的回调处理程序” 中显示的示例实现来获取服务器端的密码。在服务器端,WSS4J 运行时会将从回调获取的密码与收到的客户端凭据中的密码进行比较。如果两个密码匹配,则成功验证凭据。
服务器回调处理程序的更现实实施涉及编写与用于存储安全数据(例如,与 LDAP 服务器集成)的第三方数据库集成。