JAX-WS и Стандартная аутентификация, когда имена пользователя и пароли находятся в базе данных

Я плохо знаком с JAX-WS и существует вещь, которую я не понимаю.

Существует тонна учебных руководств, доступных о том, как настроить безопасность JAX-WS, но в в значительной степени всех случаях BindingProvider. USERNAME_PROPERTY и BindingProvider. PASSWORD_PROPERTY хранятся в некотором .xml файле (в зависимости от контейнера, которому я верю) - они - "hardcoded", который является. И это - то, что я не получаю. Как я могу аутентифицировать клиент веб-сервиса путем сравнения BindingProvider. USERNAME_PROPERTY и BindingProvider. PASSWORD_PROPERTY с именем пользователя и паролем это находится в базе данных? Я попробовал установку BindingProvider. USERNAME_PROPERTY и BindingProvider. PASSWORD_PROPERTY на стороне клиента как это:

    ShopingCartService scs = new ShopingCartService(wsdlURL, name);
    ShopingCart sc = scs.getShopingCartPort();
    Map requestContext = ((BindingProvider)sc).getRequestContext();
    requestContext.put(BindingProvider.USERNAME_PROPERTY, userName);
    requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
    sc.someFunctionCall();

И затем, на стороне сервера, получающей как это:

@Resource
WebServiceContext wsContext;

@WebMethod
public void someFunctionCall() {
    MessageContext mc = wsContext.getMessageContext();
    mc.get(BindingProvider.USERNAME_PROPERTY);
    mc.get(BindingProvider.PASSWORD_PROPERTY);
}

Но я всегда становлюсь пустым, я ничего не настраивал в xml, веб-сервис работает просто великолепно, кроме я не могу получить те переменные :(

Я работаю и на java 1.6, кот 6 и на JAX-WS.

Любая справка с проходящими проверку подлинности пользователями с паролями от базы данных значительно ценится, Спасибо.

22
задан Simulant 24 September 2015 в 14:51
поделиться

1 ответ

121 --- 4551122-

BindingProvider.Username_Property и BindingProvider.Password_Property соответствуют основным механизму аутентификации HTTP, который включает аутентификацию Процесс на уровне HTTP и не на приложении, ни уровне сервлета.

В основном, только HTTP-сервер будет знать имя пользователя и пароль (и в конечном итоге приложение в соответствии с спецификацией HTTP / сервера приложений, таких с Apache / PHP). С Tomcat / Java добавьте базовый конфигурацию входа в систему в вашем web.xml и соответствующие ограничения на безопасность / роли безопасности (роли, которые будут позже связаны с пользователями / группами реальных пользователей).

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>YourRealm</realm-name>
</login-config>

Затем подключите царство на уровне HTTP Server (или сервера приложений) с соответствующим репозиторий пользователя. Для Tomcat вы можете посмотреть на JaAsrealm, JDBCREALM или DataSourceLealm, который может удовлетворить ваши потребности.

http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html

11
ответ дан 29 November 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: