Установите безопасный файл cookie из файла weblogic.xml для HTTPS

Cookie определяется в weblogic.xml

<session-descriptor>
    <cookie-name>A_JSESSIONID</cookie-name>
</session-descriptor>

Когда мы используем соединение HTTPS, файл cookie A_JSESSIONID не имеет безопасного статуса. Сканирование безопасности при обнаружении отрыжки обнаружило проблему "SSL cookie без установленного флажка безопасности".

Я не могу использовать

<cookie-secure>true</cookie-secure>

потому что наше приложение может также использоваться HTTP.

Я пытался установить безопасный статус в фильтре

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {

        try {

 HttpServletRequest request = (HttpServletRequest) servletRequest;
            Cookie[] cookies = request.getCookies();

            if(cookies!=null && servletRequest.isSecure())
            {               
                for (Cookie cookie : cookies) {
 logger.debug("set Secure for cookie: " + cookie.getName());
                    cookie.setSecure(true);
                }
            }
...

Регистратор показывает файл cookie A_JSESSIONID. Но это не работает. Это все еще не безопасно.

Я также нашел информацию ( https://docs.oracle.com/cd/E23943_01/web.1111/e13711/thin_client.htm):

Сервер WebLogic использует два файла cookie: файл cookie JSESSIONID и файл cookie _WL_AUTHCOOKIE_JSESSIONID. По умолчанию cookie JSESSIONID никогда не является безопасным, но cookie _WL_AUTHCOOKIE_JSESSIONID всегда безопасен. Безопасный файл cookie отправляется только при использовании зашифрованного канала связи. При условии стандартного входа в HTTPS (HTTPS - это зашифрованное соединение HTTP), ваш браузер получает оба куки.

AuthCookieEnabled имеет значение true в консоли WebLogic, но я не вижу _WL_AUTHCOOKIE_A_JSESSIONID в моем списке файлов cookie. Просто A_JSESSIONID без защищенного статуса.

Как я могу динамически установить безопасность файлов cookie weblogic? Или как я могу найти _WL_AUTHCOOKIE_A_JSESSIONID?

Благодарю.

1 ответ

До сих пор я читал эту тему - 1) Убедитесь, что Консоль администрирования, Домен> Конфигурация> Веб-приложения> Проверка подлинности cookie включена (по умолчанию). 2) Разумеется, конечно, SSL. 3) Подобный код

   workCookie = new Cookie(cookieName,"startValue");
   workCookie.setPath("/");
   workCookie.setMaxAge(10 * 24 * 3600);
   workCookie.setSecure(true);
   response.addCookie(workCookie);

теперь, когда вы обращаетесь к своему приложению в http, вы не видите этот файл cookie, а при доступе через https вы видите этот файл cookie.

Надеюсь это поможет

Другие вопросы по тегам