Search in sources :

Example 1 with Cookie

use of io.micronaut.http.cookie.Cookie in project micronaut-security by micronaut-projects.

the class CookieStatePersistence method persistState.

@Override
public void persistState(HttpRequest<?> request, MutableHttpResponse response, State state) {
    String serializedState = stateSerDes.serialize(state);
    if (serializedState != null) {
        Cookie cookie = Cookie.of(configuration.getCookieName(), serializedState);
        cookie.configure(configuration, request.isSecure());
        response.cookie(cookie);
    }
}
Also used : Cookie(io.micronaut.http.cookie.Cookie)

Example 2 with Cookie

use of io.micronaut.http.cookie.Cookie in project micronaut-security by micronaut-projects.

the class IdTokenLoginHandler method getCookies.

/**
 * {@inheritDoc}
 */
@Override
public List<Cookie> getCookies(Authentication authentication, HttpRequest<?> request) {
    List<Cookie> cookies = new ArrayList<>(1);
    String accessToken = parseIdToken(authentication).orElseThrow(() -> new OauthErrorResponseException(ObtainingAuthorizationErrorCode.SERVER_ERROR, "Cannot obtain an access token", null));
    Cookie jwtCookie = Cookie.of(accessTokenCookieConfiguration.getCookieName(), accessToken);
    jwtCookie.configure(accessTokenCookieConfiguration, request.isSecure());
    jwtCookie.maxAge(cookieExpiration(authentication, request));
    cookies.add(jwtCookie);
    return cookies;
}
Also used : Cookie(io.micronaut.http.cookie.Cookie) ArrayList(java.util.ArrayList) OauthErrorResponseException(io.micronaut.security.errors.OauthErrorResponseException)

Example 3 with Cookie

use of io.micronaut.http.cookie.Cookie in project micronaut-security by micronaut-projects.

the class JwtCookieLoginHandler method getCookies.

/**
 * Return the cookies for the given parameters.
 *
 * @param accessRefreshToken The access refresh token
 * @param request The current request
 * @return A list of cookies
 */
protected List<Cookie> getCookies(AccessRefreshToken accessRefreshToken, HttpRequest<?> request) {
    List<Cookie> cookies = new ArrayList<>(2);
    Cookie jwtCookie = Cookie.of(accessTokenCookieConfiguration.getCookieName(), accessRefreshToken.getAccessToken());
    jwtCookie.configure(accessTokenCookieConfiguration, request.isSecure());
    TemporalAmount maxAge = accessTokenCookieConfiguration.getCookieMaxAge().orElseGet(() -> Duration.ofSeconds(accessTokenConfiguration.getExpiration()));
    jwtCookie.maxAge(maxAge);
    cookies.add(jwtCookie);
    String refreshToken = accessRefreshToken.getRefreshToken();
    if (StringUtils.isNotEmpty(refreshToken)) {
        Cookie refreshCookie = Cookie.of(refreshTokenCookieConfiguration.getCookieName(), refreshToken);
        refreshCookie.configure(refreshTokenCookieConfiguration, request.isSecure());
        refreshCookie.maxAge(refreshTokenCookieConfiguration.getCookieMaxAge().orElseGet(() -> Duration.ofDays(30)));
        cookies.add(refreshCookie);
    }
    return cookies;
}
Also used : Cookie(io.micronaut.http.cookie.Cookie) TemporalAmount(java.time.temporal.TemporalAmount) ArrayList(java.util.ArrayList)

Example 4 with Cookie

use of io.micronaut.http.cookie.Cookie in project micronaut-multitenancy by micronaut-projects.

the class CookieTenantWriter method writeTenant.

/**
 * Writes the Tenant Id in a cookie of the request.
 * @param request The {@link MutableHttpRequest} instance
 * @param tenant Tenant Id
 */
@Override
public void writeTenant(MutableHttpRequest<?> request, Serializable tenant) {
    if (tenant instanceof String) {
        Cookie cookie = Cookie.of(cookieTenantWriterConfiguration.getCookiename(), (String) tenant);
        cookie.configure(cookieTenantWriterConfiguration, request.isSecure());
        if (cookieTenantWriterConfiguration.getCookieMaxAge().isPresent()) {
            cookie.maxAge(cookieTenantWriterConfiguration.getCookieMaxAge().get());
        } else {
            cookie.maxAge(Integer.MAX_VALUE);
        }
        request.cookie(cookie);
    }
}
Also used : Cookie(io.micronaut.http.cookie.Cookie)

Example 5 with Cookie

use of io.micronaut.http.cookie.Cookie in project micronaut-graphql by micronaut-projects.

the class LoginDataFetcher method get.

@Override
public LoginPayload get(DataFetchingEnvironment environment) throws Exception {
    GraphQLContext graphQLContext = environment.getContext();
    if (LOGIN_RATE_LIMIT_REMAINING <= 0) {
        addRateLimitHeaders(graphQLContext);
        resetRateLimit();
        return LoginPayload.ofError("Rate Limit Exceeded");
    }
    HttpRequest httpRequest = graphQLContext.get("httpRequest");
    MutableHttpResponse<String> httpResponse = graphQLContext.get("httpResponse");
    String username = environment.getArgument("username");
    String password = environment.getArgument("password");
    UsernamePasswordCredentials usernamePasswordCredentials = new UsernamePasswordCredentials(username, password);
    LOGIN_RATE_LIMIT_REMAINING--;
    Flux<AuthenticationResponse> authenticationResponseFlowable = Flux.from(authenticator.authenticate(httpRequest, usernamePasswordCredentials));
    return authenticationResponseFlowable.map(authenticationResponse -> {
        addRateLimitHeaders(graphQLContext);
        if (authenticationResponse.isAuthenticated()) {
            eventPublisher.publishEvent(new LoginSuccessfulEvent(authenticationResponse));
            Optional<Cookie> jwtCookie = accessTokenCookie(Authentication.build(username), httpRequest);
            jwtCookie.ifPresent(httpResponse::cookie);
            User user = userRepository.findByUsername(username).orElse(null);
            return LoginPayload.ofUser(user);
        } else {
            eventPublisher.publishEvent(new LoginFailedEvent(authenticationResponse));
            return LoginPayload.ofError(authenticationResponse.getMessage().orElse(null));
        }
    }).blockFirst();
}
Also used : HttpRequest(io.micronaut.http.HttpRequest) DataFetchingEnvironment(graphql.schema.DataFetchingEnvironment) UsernamePasswordCredentials(io.micronaut.security.authentication.UsernamePasswordCredentials) AccessRefreshToken(io.micronaut.security.token.jwt.render.AccessRefreshToken) Cookie(io.micronaut.http.cookie.Cookie) User(example.domain.User) AccessTokenConfiguration(io.micronaut.security.token.jwt.generator.AccessTokenConfiguration) ApplicationEventPublisher(io.micronaut.context.event.ApplicationEventPublisher) MutableHttpResponse(io.micronaut.http.MutableHttpResponse) Authentication(io.micronaut.security.authentication.Authentication) Singleton(jakarta.inject.Singleton) Random(java.util.Random) CookieConfiguration(io.micronaut.http.cookie.CookieConfiguration) AccessRefreshTokenGenerator(io.micronaut.security.token.jwt.generator.AccessRefreshTokenGenerator) UserRepository(example.repository.UserRepository) Authenticator(io.micronaut.security.authentication.Authenticator) Flux(reactor.core.publisher.Flux) LoginSuccessfulEvent(io.micronaut.security.event.LoginSuccessfulEvent) GraphQLContext(graphql.GraphQLContext) DataFetcher(graphql.schema.DataFetcher) TemporalAmount(java.time.temporal.TemporalAmount) Optional(java.util.Optional) HttpRequest(io.micronaut.http.HttpRequest) LoginFailedEvent(io.micronaut.security.event.LoginFailedEvent) AuthenticationResponse(io.micronaut.security.authentication.AuthenticationResponse) User(example.domain.User) Optional(java.util.Optional) GraphQLContext(graphql.GraphQLContext) LoginSuccessfulEvent(io.micronaut.security.event.LoginSuccessfulEvent) AuthenticationResponse(io.micronaut.security.authentication.AuthenticationResponse) LoginFailedEvent(io.micronaut.security.event.LoginFailedEvent) UsernamePasswordCredentials(io.micronaut.security.authentication.UsernamePasswordCredentials)

Aggregations

Cookie (io.micronaut.http.cookie.Cookie)10 TemporalAmount (java.time.temporal.TemporalAmount)3 AccessRefreshToken (io.micronaut.security.token.jwt.render.AccessRefreshToken)2 ArrayList (java.util.ArrayList)2 User (example.domain.User)1 UserRepository (example.repository.UserRepository)1 GraphQLContext (graphql.GraphQLContext)1 DataFetcher (graphql.schema.DataFetcher)1 DataFetchingEnvironment (graphql.schema.DataFetchingEnvironment)1 ApplicationEventPublisher (io.micronaut.context.event.ApplicationEventPublisher)1 HttpRequest (io.micronaut.http.HttpRequest)1 MutableHttpResponse (io.micronaut.http.MutableHttpResponse)1 CookieConfiguration (io.micronaut.http.cookie.CookieConfiguration)1 Authentication (io.micronaut.security.authentication.Authentication)1 AuthenticationResponse (io.micronaut.security.authentication.AuthenticationResponse)1 Authenticator (io.micronaut.security.authentication.Authenticator)1 UsernamePasswordCredentials (io.micronaut.security.authentication.UsernamePasswordCredentials)1 OauthErrorResponseException (io.micronaut.security.errors.OauthErrorResponseException)1 LoginFailedEvent (io.micronaut.security.event.LoginFailedEvent)1 LoginSuccessfulEvent (io.micronaut.security.event.LoginSuccessfulEvent)1