-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
OidcSessionImpl.java
75 lines (59 loc) · 2.06 KB
/
OidcSessionImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package io.quarkus.oidc.runtime;
import java.time.Duration;
import java.time.Instant;
import java.util.function.Function;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.eclipse.microprofile.jwt.JsonWebToken;
import io.quarkus.oidc.IdToken;
import io.quarkus.oidc.OidcSession;
import io.quarkus.oidc.OidcTenantConfig;
import io.smallrye.mutiny.Uni;
import io.vertx.ext.web.RoutingContext;
@ApplicationScoped
public class OidcSessionImpl implements OidcSession {
@Inject
RoutingContext routingContext;
@Inject
DefaultTenantConfigResolver resolver;
@Inject
@IdToken
JsonWebToken idToken;
@Override
public String getTenantId() {
return routingContext.get(OidcUtils.TENANT_ID_ATTRIBUTE);
}
@Override
public Uni<Void> logout() {
String sessionCookieName = routingContext.get(OidcUtils.SESSION_COOKIE_NAME);
if (sessionCookieName != null) {
Uni<OidcTenantConfig> oidcConfigUni = resolver.resolveConfig(routingContext);
return oidcConfigUni.onItem().transformToUni(new Function<OidcTenantConfig, Uni<? extends Void>>() {
@Override
public Uni<Void> apply(OidcTenantConfig oidcConfig) {
return OidcUtils.removeSessionCookie(routingContext, oidcConfig, sessionCookieName,
resolver.getTokenStateManager());
}
});
}
return Uni.createFrom().voidItem();
}
@Override
public Instant expiresIn() {
final long nowSecs = System.currentTimeMillis() / 1000;
return Instant.ofEpochSecond(idToken.getExpirationTime() - nowSecs);
}
@Override
public Instant expiresAt() {
return Instant.ofEpochSecond(idToken.getExpirationTime());
}
@Override
public Duration validFor() {
final long nowSecs = System.currentTimeMillis() / 1000;
return Duration.ofSeconds(idToken.getExpirationTime() - nowSecs);
}
@Override
public JsonWebToken getIdToken() {
return idToken;
}
}