Skip to content

Commit 545b115

Browse files
timjadaniel-beck
authored andcommitted
SECURITY-3227
(cherry picked from commit 907382d)
1 parent bb34272 commit 545b115

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/main/java/com/microsoft/jenkins/azuread/AzureSecurityRealm.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
import java.net.Proxy;
8383
import java.net.URLEncoder;
8484
import java.nio.charset.StandardCharsets;
85+
import java.security.MessageDigest;
8586
import java.util.HashMap;
8687
import java.util.LinkedList;
8788
import java.util.List;
@@ -108,7 +109,7 @@ public class AzureSecurityRealm extends SecurityRealm {
108109
private static final String TIMESTAMP_ATTRIBUTE = AzureSecurityRealm.class.getName() + ".beginTime";
109110
private static final String NONCE_ATTRIBUTE = AzureSecurityRealm.class.getName() + ".nonce";
110111
private static final Logger LOGGER = Logger.getLogger(AzureSecurityRealm.class.getName());
111-
private static final int NONCE_LENGTH = 10;
112+
private static final int NONCE_LENGTH = 16;
112113
public static final String CALLBACK_URL = "/securityRealm/finishLogin";
113114
private static final String CONVERTER_NODE_CLIENT_ID = "clientid";
114115
private static final String CONVERTER_NODE_CLIENT_SECRET = "clientsecret";
@@ -458,7 +459,12 @@ public HttpResponse doFinishLogin(StaplerRequest request)
458459
JwtClaims validateIdToken(String expectedNonce, String idToken) throws InvalidJwtException {
459460
JwtClaims claims = getJwtConsumer().processToClaims(idToken);
460461
final String responseNonce = (String) claims.getClaimValue("nonce");
461-
if (StringUtils.isAnyEmpty(expectedNonce, responseNonce) || !expectedNonce.equals(responseNonce)) {
462+
if (StringUtils.isAnyEmpty(expectedNonce, responseNonce)
463+
|| !MessageDigest.isEqual(
464+
expectedNonce.getBytes(StandardCharsets.UTF_8),
465+
responseNonce.getBytes(StandardCharsets.UTF_8)
466+
)
467+
) {
462468
throw new IllegalStateException(String.format("Invalid nonce in the response, "
463469
+ "expected: %s actual: %s", expectedNonce, responseNonce));
464470
}

0 commit comments

Comments
 (0)