Skip to content

Commit d585c1f

Browse files
authored
Merge pull request #34073 from sberyozkin/oidc_same_site_all_session_cookies
Add configured SameSite attribute to all OIDC session cookies
2 parents 974bc29 + 8639f98 commit d585c1f

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/DefaultTokenStateManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ public Uni<String> createTokenState(RoutingContext routingContext, OidcTenantCon
3939
oidcConfig,
4040
getAccessTokenCookieName(oidcConfig),
4141
encryptToken(tokens.getAccessToken(), routingContext, oidcConfig),
42-
routingContext.get(CodeAuthenticationMechanism.SESSION_MAX_AGE_PARAM));
42+
routingContext.get(CodeAuthenticationMechanism.SESSION_MAX_AGE_PARAM), true);
4343
if (tokens.getRefreshToken() != null) {
4444
CodeAuthenticationMechanism.createCookie(routingContext,
4545
oidcConfig,
4646
getRefreshTokenCookieName(oidcConfig),
4747
encryptToken(tokens.getRefreshToken(), routingContext, oidcConfig),
48-
routingContext.get(CodeAuthenticationMechanism.SESSION_MAX_AGE_PARAM));
48+
routingContext.get(CodeAuthenticationMechanism.SESSION_MAX_AGE_PARAM), true);
4949
}
5050
}
5151
} else if (oidcConfig.tokenStateManager.strategy == OidcTenantConfig.TokenStateManager.Strategy.ID_REFRESH_TOKENS) {

integration-tests/oidc-code-flow/src/main/resources/application.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ quarkus.oidc.tenant-split-tokens.credentials.secret=secret
147147
quarkus.oidc.tenant-split-tokens.token-state-manager.split-tokens=true
148148
quarkus.oidc.tenant-split-tokens.token-state-manager.encryption-secret=eUk1p7UB3nFiXZGUXi0uph1Y9p34YhBU
149149
quarkus.oidc.tenant-split-tokens.application-type=web-app
150+
quarkus.oidc.tenant-split-tokens.authentication.cookie-same-site=strict
150151

151152
quarkus.http.auth.permission.roles1.paths=/index.html
152153
quarkus.http.auth.permission.roles1.policy=authenticated

integration-tests/oidc-code-flow/src/test/java/io/quarkus/it/keycloak/CodeFlowTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -936,12 +936,15 @@ public void testDefaultSessionManagerSplitTokens() throws IOException, Interrupt
936936

937937
final String decryptSecret = "eUk1p7UB3nFiXZGUXi0uph1Y9p34YhBU";
938938
Cookie idTokenCookie = getSessionCookie(page.getWebClient(), "tenant-split-tokens");
939+
assertEquals("strict", idTokenCookie.getSameSite());
939940
checkSingleTokenCookie(idTokenCookie, "ID", decryptSecret);
940941

941942
Cookie atTokenCookie = getSessionAtCookie(page.getWebClient(), "tenant-split-tokens");
943+
assertEquals("strict", atTokenCookie.getSameSite());
942944
checkSingleTokenCookie(atTokenCookie, "Bearer", decryptSecret);
943945

944946
Cookie rtTokenCookie = getSessionRtCookie(page.getWebClient(), "tenant-split-tokens");
947+
assertEquals("strict", rtTokenCookie.getSameSite());
945948
checkSingleTokenCookie(rtTokenCookie, "Refresh", decryptSecret);
946949

947950
// verify all the cookies are cleared after the session timeout
@@ -1023,11 +1026,6 @@ public Boolean call() throws Exception {
10231026
}
10241027
}
10251028

1026-
private void checkSingleTokenCookie(Cookie tokenCookie, String type) {
1027-
checkSingleTokenCookie(tokenCookie, type, null);
1028-
1029-
}
1030-
10311029
private void checkSingleTokenCookie(Cookie tokenCookie, String type, String decryptSecret) {
10321030
String[] cookieParts = tokenCookie.getValue().split("\\|");
10331031
assertEquals(1, cookieParts.length);

0 commit comments

Comments
 (0)