HTTP-аутентификация Java повторное использование между сервлетами - PullRequest
0 голосов
/ 03 апреля 2012

не уверен, как правильно сформулировать вопрос.

У меня есть два веб-приложения: A с сервлетом и B с двумя сервлетами, оба защищены базовой аутентификацией в web.xml (развернут на сервере weblogic).

пользователь аутентифицируется в A и в одном из сервлетов B (не уверен, что то, что я здесь говорю, является полным мусором), используя окно логина / пароля браузера (это управляется weblogic).

однако сервлет приложения A должен также вызывать другой из сервлетов B, что также требует аутентификации.

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

Кажется, что

куки не могут быть использованы, поскольку это действительно общение на стороне сервера.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2015

Сделайте это в своем коде сервлета в приложении A:

URLConnection conn = new URL("http://hostname/appB/servlet1");
String authorizationHeader = request.getHeader("authorization");
if (null != authorizationHeader) {
    conn.setRequestProperty("authorization", authorizationHeader);
}
InputStream inStream = conn.getInputStream();
//Read from inStream in the usual way
0 голосов
/ 04 апреля 2012

следующие должны решить проблему:

  1. create javax.servlet.Filter, который извлекает jsessionid из запросов и каким-то образом сохраняет его для каждого пользователя (в моем случае я установил значение org.springframework.security.core.Authentication как details, убедившись, что этот фильтр работает после Spring-security).

  2. добавить его в каждый запрос сервлета-сервлета в качестве заголовка cookie:

    org.apache.commons.httpclient.HttpMethodBase.setRequestHeader("Cookie",
        "jsessionid="+org.springframework.security.core.Authentication.getDetails().toString()); 
    

    при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...