Установите безопасный файл 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.
Надеюсь это поможет