gpt4 book ai didi

java - 从 Web 服务 (JAX-WS) 中访问用户名/密码?

转载 作者:行者123 更新时间:2023-11-30 09:55:26 25 4
gpt4 key购买 nike

我们正在实现一个 Web 服务,它将充当客户端和另一个应用程序之间的中间层。我们对 Web 服务的要求表明我们需要使用标准 WS-Security 在 SOAP header 中发送用户名和密码。

Web 服务实现需要获取通过方法调用传入的信息,并将其与用户名和密码结合起来才能调用其他应用程序,这就是我的问题开始的地方。

我想不出一种简单的方法来从我的 Web 服务实现中的 SOAP header 获取用户名和密码。我可以通过注入(inject)的 WebServiceContext 获取用户主体(用户名),但我没有看到任何获取密码的简单方法。

我可以访问 SOAPHeader 并可能解析 XML 以获取密码元素,但这似乎是解决此问题的一种非常困惑的方法。

我并不像我希望的那样了解 JAX-WS 和 WS-Security。我希望我遗漏了对其他人来说显而易见的东西 - 也许我需要实现某种处理程序?

最佳答案

最简单的方法是通过将用户名和密码指定为 JAX-WS 方法的参数,从 SOAP header 中提取用户名和密码:

@WebMethod
public String performAction( @WebParam(name="credentials", header=true)
Credentials credentials,
@WebParam( name="...")....

您还可以创建一个 SOAPHandler:

public class AuthenticationHandler implements SOAPHandler<SOAPMessageContext>
{
//Implement appropriate methods here
}

这是在 standard-jaxws-endpoint-config.xml 中注册的:

<jaxws-config xmlns="urn:jboss:jaxws-config:2.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="urn:jboss:jaxws-config:2.0 jaxws-config_2_0.xsd">
<endpoint-config>
<config-name>WebService Endpoint</config-name>
<pre-handler-chains>
<javaee:handler-chain>
<javaee:protocol-bindings>##SOAP11_HTTP</javaee:protocol-bindings>
<javaee:handler>
<javaee:handler-name>AuthHandler</javaee:handler-name>
<javaee:handler-class>com.example.AuthenticationHandler</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
</pre-handler-chains>
</endpoint-config>
</jaxws-config>

关于java - 从 Web 服务 (JAX-WS) 中访问用户名/密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828534/

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