Skip to content

Commit e18cb70

Browse files
committed
replaced deprecated method
1 parent eee96ed commit e18cb70

File tree

1 file changed

+36
-42
lines changed

1 file changed

+36
-42
lines changed

dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/auth/BackChannelLogoutAuthenticator.java

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.util.Objects;
55
import java.util.concurrent.ConcurrentHashMap;
66
import java.util.concurrent.ConcurrentMap;
7-
import java.util.concurrent.ExecutionException;
87

98
import org.eclipse.jetty.http.HttpHeader;
109
import org.eclipse.jetty.http.HttpMethod;
@@ -91,60 +90,55 @@ private boolean isContentTypeFormEncoded(Request request)
9190
public AuthenticationState validateRequest(Request request, Response response, Callback callback)
9291
throws ServerAuthException
9392
{
94-
try
93+
94+
Fields formFields = FormFields.getFields(request);
95+
Field logoutTokenField = formFields.get("logout_token");
96+
97+
if (logoutTokenField == null || logoutTokenField.getValues().size() != 1)
9598
{
96-
Fields formFields = FormFields.from(request).get();
97-
Field logoutTokenField = formFields.get("logout_token");
99+
Response.writeError(request, response, callback, HttpStatus.FORBIDDEN_403);
100+
return AuthenticationState.SEND_FAILURE;
101+
}
98102

99-
if (logoutTokenField == null || logoutTokenField.getValues().size() != 1)
103+
Algorithm algorithm = Algorithm.RSA256(openIdConfiguration.getRsaKeyProvider());
104+
JWTVerifier verifier = JWT.require(algorithm).withIssuer(openIdConfiguration.getIssuer())
105+
.withAudience(openIdConfiguration.getClientId()).acceptLeeway(1)
106+
.withClaim("events",
107+
(claim, jwt) -> claim.asMap().containsKey("http://schemas.openid.net/event/backchannel-logout"))
108+
.build();
109+
110+
try
111+
{
112+
DecodedJWT jwt = verifier.verify(logoutTokenField.getValue());
113+
if (!jwt.getClaims().containsKey("sub") && !jwt.getClaims().containsKey("sid"))
100114
{
101-
Response.writeError(request, response, callback, HttpStatus.FORBIDDEN_403);
115+
logger.warn("Logout Token has no sub and no sid claim");
116+
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
102117
return AuthenticationState.SEND_FAILURE;
103118
}
104119

105-
Algorithm algorithm = Algorithm.RSA256(openIdConfiguration.getRsaKeyProvider());
106-
JWTVerifier verifier = JWT.require(algorithm).withIssuer(openIdConfiguration.getIssuer())
107-
.withAudience(openIdConfiguration.getClientId()).acceptLeeway(1).withClaim("events", (claim,
108-
jwt) -> claim.asMap().containsKey("http://schemas.openid.net/event/backchannel-logout"))
109-
.build();
120+
logger.debug("logout token claims: {}", jwt.getClaims());
110121

111-
try
112-
{
113-
DecodedJWT jwt = verifier.verify(logoutTokenField.getValue());
114-
if (!jwt.getClaims().containsKey("sub") && !jwt.getClaims().containsKey("sid"))
115-
{
116-
logger.warn("Logout Token has no sub and no sid claim");
117-
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
118-
return AuthenticationState.SEND_FAILURE;
119-
}
120-
121-
logger.debug("logout token claims: {}", jwt.getClaims());
122+
String sub = jwt.getClaim("sub").asString();
123+
String sid = jwt.getClaim("sid").asString();
122124

123-
String sub = jwt.getClaim("sub").asString();
124-
String sid = jwt.getClaim("sid").asString();
125+
logger.debug("Invalidating session for sub/sid {}/{}", sub, sid);
125126

126-
logger.debug("Invalidating session for sub/sid {}/{}", sub, sid);
127+
HttpSession sessionBySub = sessionsBySub.get(sub);
128+
if (sessionBySub != null)
129+
sessionBySub.invalidate();
127130

128-
HttpSession sessionBySub = sessionsBySub.get(sub);
129-
if (sessionBySub != null)
130-
sessionBySub.invalidate();
131+
// session will have been removed if found by sub and invalidated
132+
HttpSession sessionBySid = sessionsBySid.get(sid);
133+
if (sessionBySid != null)
134+
sessionBySid.invalidate();
131135

132-
// session will have been removed if found by sub and invalidated
133-
HttpSession sessionBySid = sessionsBySid.get(sid);
134-
if (sessionBySid != null)
135-
sessionBySid.invalidate();
136-
137-
return AuthenticationState.SEND_SUCCESS;
138-
}
139-
catch (JWTVerificationException e)
140-
{
141-
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
142-
return AuthenticationState.SEND_FAILURE;
143-
}
136+
return AuthenticationState.SEND_SUCCESS;
144137
}
145-
catch (InterruptedException | ExecutionException e)
138+
catch (JWTVerificationException e)
146139
{
147-
throw new ServerAuthException(e);
140+
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
141+
return AuthenticationState.SEND_FAILURE;
148142
}
149143
}
150144

0 commit comments

Comments
 (0)