gpt4 book ai didi

java - SOAP Web 服务中的用户身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:13 24 4
gpt4 key购买 nike

我提出了关于 JAX-WS, Authentication and Authorization - How to? 的问题;讨论了安全级别以及用户凭据的存储位置。

现在在得出一些结论之后,我想尝试其中一种情况:

  • SOAP 网络服务 - 地铁
  • 消息级安全 - 相互证书认证,对客户端应用程序进行认证
  • Soap header 中的用户凭据

如何获取凭据并进行授权?我有两个想法:

  • JAAS(我对此一无所知);
  • SOAP 处理程序 - 使用 WebServiceContext 从消息中提取凭据并“手动”进行授权。

你能帮我确定最好的方法,以及如何实现吗?

请记住,我需要相互证书以及用户 token 。

最佳答案

JAAS没有定义身份验证信息在 SOAP 中的样子,但是 WS-Security定义在客户端-服务器交换期间可以使用哪种标准化 token (用户名+密码 token /X.509 证书/SAML token /Kerberos token )。

编辑: 关于 Metro WebService 堆栈,您需要(从 herehere 采取的步骤):

  • 通过 ((BindingProvider)port).getBinding() 以编程方式将实现 javax.xml.ws.handler.soap.SOAPHandler 的处理程序注入(inject) JAX-WS 处理程序链。 setHandlerChain(Collections.singletonList(handler)) 或通过向 WS 端点接口(interface)添加 @HandlerChain(file = "handlers.xml") 注释以声明方式。
  • 处理程序应使用 XWSSProcessorFactory 创建 XWSSProcessor 实例,该实例传递给实现 javax.security.auth.callback.CallbackHandler 的回调处理程序.
  • 回调处理程序,例如定义回调 validator (取决于回调类型)。

这与“手动执行”相同(因为无论如何第一步都是与 SOAP 消息相交),上面有一些 WSS 糖。但是 WSIT(和 CXF)使用 JAAS API,它们为各种身份验证 token 提供标准实现。启用它们需要一些配置/编码工作,但好处是如果您以后决定从纯文本身份验证切换到 Kerberos 身份验证,则不需要编写很多代码。此外,“手工完成”意味着您需要处理 XML 级别的身份验证信息,而您要做的是实现其中一个标准。

我建议使用 Apache CXF基于 WSS4J – 来自 Apache 的 WS-Security 实现。您可以轻松找到显示定义 here 的教程(例如 herehere 用于用户名+密码,herecallback 用于 SAML)/拦截器验证身份验证信息。 CXF的优点是它与Spring有很好的集成。

关于java - SOAP Web 服务中的用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com