JAX-WS应该允许您拥有自定义拦截器。
看看这个spring配置,看看我是如何向服务端点添加一个拦截器的。
<jaxws:endpoint id="pqdws" implementor="#Atypon" address="/pqdws" publishedEndpointUrl="@ws_webapp_url_ext@"> <jaxws:properties> <entry key="exceptionMessageCauseEnabled" value="true"/> <entry key="Content-length" </jaxws:properties> <jaxws:inInterceptors> <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> <constructor-arg> <map> <entry key="action" value="UsernameToken"/> <entry key="passwordType" value="PasswordText"/> <entry key="passwordCallbackRef"> <ref bean="passwordCallback"/> </entry> </map> </constructor-arg> </bean> </jaxws:inInterceptors> </jaxws:endpoint> <bean id="passwordCallback" class="access.ws.ServerPasswordCallback"> <property name="username" value="@ws_sec_username@"/> <property name="password" value="@ws_sec_password@"/> </bean>
然后,拦截器可以执行任何操作,包括调用外部服务进行身份验证。
另一个可能的答案是创建一个信任关联拦截器(TAI)。这基本上扩展了您当前的安全性
这是一个有用的入门链接: http://www.ibm.com/developerworks/websphere/techjournal/0508_benantar/0508_benantar.html
您可以使用带有策略/绑定的现成WS-Security运行时来实现此目的,但您必须编写自定义代码来覆盖检查UsernameTokens的用户注册表的默认行为。
在使用UsernameToken时,请参阅此文章以使用您自己的身份验证机制:
配置UsernameToken调用程序配置,没有注册表交互
如果您还想根据该令牌中的用户名创建WebSphere凭据,请参阅此文章:
使用堆叠的JAAS登录模块替换UsernameToken使用者的身份验证方法
你能详细说明你想要达到的目标吗?
WAS服务器需要根据其用户注册表(可能是LDAP,基于文件的注册表等)验证标头中的用户名和密码。
也可以使用LTPA令牌(WebSphere和相关产品用于SSO)。
如果你说出你的要求,这里的人们将能够帮助你。
HTH
Manglu