Заголовок SOAP с использованием JAX-WS (на стороне сервера) - PullRequest
2 голосов
/ 11 сентября 2011

Требуется включить атрибуты безопасности в заголовок сообщения Soap в каждый запрос WebService. Один из способов включить это:

@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 (через некоторое аннотирование), что было бы действительно полезно. Например:

public class BaseRequest
{

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

}

Пока что я не могу найти способ сделать это. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 14 февраля 2012

Я знаю, что недавно вы задавали этот вопрос, и, возможно, вы уже выяснили себя, но я все равно отвечаю на него: старайтесь избегать создания своего собственного аутентификационного рукопожатия для веб-служб - вместо этого используйте любой уровень сообщений веб-службыбезопасность, если ваш сервер и клиент предоставляют ее, или просто используют защиту на транспортном уровне, например, Basic Authentication и / или SPNEGO.

Выбор механизма аутентификации зависит главным образом от вашего контекста: если вы предоставляете услугу внутри компаниисеть, используйте все, что там предусмотрено, или базовую аутентификацию, если нет инфраструктуры центральной аутентификации.Если вы предоставляете свою веб-службу Интернету, самый простой способ выполнить аутентификацию - это снова обычная аутентификация (через SSL), но это опять-таки зависит от того, какого типа потребителей вы планируете.

Этот ответ вызывает больше вопросов,Я думаю, извините за это.Главное, чтобы вы не пытались заново изобретать колесо =: -)

...