gpt4 book ai didi

java - 使用 JAX-WS 的 SOAP header (服务器端)

转载 作者:行者123 更新时间:2023-11-30 11:51:31 24 4
gpt4 key购买 nike

要求是在每个 WebService 请求的 Soap Message header 中包含安全属性。一种包含方法是:

@WebService
@SOAPBinding
(
style = javax.jws.soap.SOAPBinding.Style.DOCUMENT,
use = javax.jws.soap.SOAPBinding.Use.LITERAL
)
public interface UserService
{

@WebMethod
public AuthenticateResponse authenticateUser(AuthenticateRequest request, @webParam(header=true) ApplicationCredential appcredential);


@WebMethod
public UserDetailResponse getUserDetail(UserDetailRequest request, @webParam(header=true) ApplicationCredential appcredential);

}

但是,使用上述方法,我需要在每个操作中包含 ApplicationCredential。看起来不太好。我正在寻找我们是否可以将此 ApplicationCredential 类包含在 BaseRequest 类中并在那里提到它将成为 Soap Header 的一部分(通过一些注释),这将非常有帮助。例如:

public class BaseRequest
{

@SomeAnnotation which states that Appcedential is a part of Soap Header
ApplicationCredential appcredential;

}

到目前为止,我找不到任何方法来做到这一点。任何帮助将不胜感激。

最佳答案

我知道您很久以前就问过这个问题,您自己可能已经发现了,但我还是回答了这个问题:尽量避免为 Web 服务创建您自己的身份验证握手 - 而是使用任一 Web 服务消息级别如果您的服务器和客户端提供安全性,或者仅使用传输级安全性,例如基本身份验证和/或 SPNEGO。

身份验证机制的选择主要取决于您的环境:如果您在公司网络内提供服务,则使用那里提供的任何服务,或者如果没有中央身份验证基础设施,则使用基本身份验证。如果您向 Internet 提供 Web 服务,最简单的身份验证方法仍然是基本身份验证(通过 SSL),但这同样取决于您设想的服务消费者类型。

我想这个答案会引发更多问题,对此我深表歉意。我的主要观点是你不应该再次尝试重新发明轮子 =:-)

关于java - 使用 JAX-WS 的 SOAP header (服务器端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380761/

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