lpi*_*.eu 8 java ws-security soap jax-ws
我提出了一个关于JAX-WS,身份验证和授权的问题 - 如何?; 讨论了安全级别以及存储用户凭据的位置.
现在得出一些结论后,我想尝试其中一种方案:
如何获取凭据并进行授权? 我有两个想法:
你能帮我决定最好的方法,以及如何实现它?
请记住,我需要共同证书,以及用户令牌.
JAAS没有定义身份验证信息在SOAP中的外观,但WS-Security定义了在客户端 - 服务器交换期间可以使用的标准化令牌类型(用户名+密码令牌/ X.509证书/ SAML令牌/ Kerberos令牌).
编辑:关于Metro WebService堆栈,您需要(从这里和这里采取的步骤):
javax.xml.ws.handler.soap.SOAPHandler编程方式((BindingProvider)port).getBinding().setHandlerChain(Collections.singletonList(handler))或通过声明方式注入对JAX-WS处理程序链实现的处理程序@HandlerChain(file = "handlers.xml").XWSSProcessor实例使用XWSSProcessorFactory,它传递实现的回调处理程序javax.security.auth.callback.CallbackHandler.这与"手工操作"相同(因为第一步是交叉SOAP消息),顶部有一些WSS糖.但是WSIT(和CXF)使用JAAS API,它们为各种身份验证令牌提供标准实现.启用它们需要一些配置/编码工作,但好处是如果您以后决定从plainttext切换到Kerberos身份验证,则不需要编写很多代码.此外,"手动执行"意味着您需要处理XML级别的身份验证信息,并且您要执行的是执行其中一个标准.
我建议使用基于WSS4J的Apache CXF - Apache的WS-Security实现.您可以轻松找到教程(例如此处和此处的用户名+密码,此处和此处为SAML),以显示定义回调 /拦截器以验证身份验证信息.CXF的优势在于它与Spring的良好集成.
| 归档时间: |
|
| 查看次数: |
10085 次 |
| 最近记录: |