Отдых - Джерси. Клиент передает @SecurityContext на сервер - PullRequest
0 голосов
/ 02 апреля 2012

Я хочу передать контекст безопасности моей службе отдыха.

На стороне сервера я пытаюсь получить это с помощью:

 public Response postObject(@Context SecurityContext security, JAXBElement<Object> object) {
    System.out.println("Security Context: " + security.getUserPrincipal());
 .....

Но на самом деле Syso равен нулю.

На стороне клиента я просто делаю:

    ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    client.addFilter(new HTTPBasicAuthFilter("user", "password"));

Итак, нужно ли мне что-то изменить в моем файле web.xml, чтобы оно заработало?

Я надеялся, что это сработает без настройки статических пользователей в tomcat user xml.Таким образом, я могу сравнить пользователя / пароль из контекста безопасности с моей «постоянной» хеш-картой пользователя / пароля, расположенной на стороне сервера.Но когда это не работает без tomcat user xml, как это сделать, чтобы динамически добавить пользователя к этому пользователю xml?Когда я являюсь статичным пользователем, я не могу зарегистрировать нового пользователя.Я не хочу использовать эту попытку: http://objecthunter.congrace.de/tinybo/blog/articles/89 потому что я хочу просто работать с полупостоянством, как HashMap пользователя / пароля.

Кроме того, еще один вопрос: почему все обращаются к Apache HttpClient, когдаречь идет о безопасности в Джерси, когда он работает так же, как я написал?

Моя попытка относится к этому посту:

API клиента Джерси - аутентификация

1 Ответ

2 голосов
/ 02 апреля 2012

Вам необходимо настроить приложение на сервере, чтобы оно требовало базовой аутентификации. То есть включите что-то вроде следующего в web.xml в файле war вашего приложения - в противном случае Tomcat не выполняет аутентификацию и не заполняет контекст безопасности.

<security-constraint>
    <display-name>Authentication Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>all</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description>authentication required</description>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>realm_name</realm-name>
</login-config>
...