Search in sources :

Example 76 with Arrays

use of java.util.Arrays in project flow by vaadin.

the class CsrfIndexHtmlRequestListener method ensureCsrfTokenCookieIsSet.

private void ensureCsrfTokenCookieIsSet(VaadinRequest request, VaadinResponse response) {
    if (isSpringCsrfTokenPresent(request)) {
        return;
    }
    final String csrfCookieValue = Optional.ofNullable(request.getCookies()).map(Arrays::stream).orElse(Stream.empty()).filter(cookie -> cookie.getName().equals(ApplicationConstants.CSRF_TOKEN)).findFirst().map(Cookie::getValue).orElse(null);
    if (csrfCookieValue != null && !csrfCookieValue.isEmpty()) {
        return;
    }
    /*
         * Despite section 6 of RFC 4122, this particular use of UUID *is*
         * adequate for security capabilities. Type 4 UUIDs contain 122 bits of
         * random data, and UUID.randomUUID() is defined to use a
         * cryptographically secure random generator.
         */
    final String csrfToken = UUID.randomUUID().toString();
    Cookie csrfCookie = new Cookie(ApplicationConstants.CSRF_TOKEN, csrfToken);
    csrfCookie.setSecure(request.isSecure());
    String path = request.getContextPath();
    if (path == null || path.isEmpty()) {
        path = "/";
    }
    csrfCookie.setPath(path);
    csrfCookie.setHttpOnly(false);
    response.addCookie(csrfCookie);
}
Also used : IndexHtmlRequestListener(com.vaadin.flow.server.communication.IndexHtmlRequestListener) Arrays(java.util.Arrays) Stream(java.util.stream.Stream) VaadinResponse(com.vaadin.flow.server.VaadinResponse) IndexHtmlResponse(com.vaadin.flow.server.communication.IndexHtmlResponse) Optional(java.util.Optional) VaadinRequest(com.vaadin.flow.server.VaadinRequest) UUID(java.util.UUID) Cookie(javax.servlet.http.Cookie) SpringCsrfTokenUtil(com.vaadin.flow.internal.springcsrf.SpringCsrfTokenUtil) ApplicationConstants(com.vaadin.flow.shared.ApplicationConstants) Cookie(javax.servlet.http.Cookie)

Aggregations

Arrays (java.util.Arrays)76 List (java.util.List)50 ArrayList (java.util.ArrayList)42 Map (java.util.Map)38 Collections (java.util.Collections)26 Test (org.junit.Test)25 HashMap (java.util.HashMap)23 Collectors (java.util.stream.Collectors)19 IOException (java.io.IOException)15 Stream (java.util.stream.Stream)15 Optional (java.util.Optional)13 Set (java.util.Set)13 Function (java.util.function.Function)13 TimeUnit (java.util.concurrent.TimeUnit)12 AtomicReference (java.util.concurrent.atomic.AtomicReference)11 Logger (org.slf4j.Logger)11 LoggerFactory (org.slf4j.LoggerFactory)11 Objects (java.util.Objects)10 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)10 IntStream (java.util.stream.IntStream)9