2026-03-15 11:53:23 +01:00

36 lines
1.2 KiB
Java

package dev.dinauer.oidcproxy.callback;
import dev.dinauer.oidcproxy.callback.model.TokenResponse;
import io.vertx.core.http.Cookie;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.http.HttpServerResponse;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import java.time.ZonedDateTime;
@ApplicationScoped
public class CallbackService
{
@Inject
OidcClient client;
@Inject
SessionRepository sessionRepository;
@ConfigProperty(name = "oidc.proxy.client.redirect")
String redirectURI;
public void get(HttpServerResponse response, HttpServerRequest request)
{
String code = request.params().get("code");
TokenResponse token = client.exchangeAuthorizationCode(code);
String sessionId = sessionRepository.add(token.accessToken());
response.addCookie(Cookie.cookie("session", sessionId).setHttpOnly(true).setSecure(true).setPath("/").setMaxAge((int) (token.expiresAt() - ZonedDateTime.now().toEpochSecond())));
response.setStatusCode(302);
response.putHeader("Location", redirectURI);
response.send();
}
}