mirror of
https://github.com/datahub-project/datahub.git
synced 2025-08-22 08:08:01 +00:00
fix(gms): Change MessageDigest to be thread safe (#5405)
This commit is contained in:
parent
fdea718e38
commit
5b61bcc4e0
@ -16,13 +16,6 @@ import com.linkedin.metadata.resources.entity.AspectUtils;
|
|||||||
import com.linkedin.metadata.utils.AuditStampUtils;
|
import com.linkedin.metadata.utils.AuditStampUtils;
|
||||||
import com.linkedin.metadata.utils.GenericRecordUtils;
|
import com.linkedin.metadata.utils.GenericRecordUtils;
|
||||||
import com.linkedin.mxe.MetadataChangeProposal;
|
import com.linkedin.mxe.MetadataChangeProposal;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.security.MessageDigest;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -31,11 +24,13 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
|
|
||||||
import static com.datahub.authentication.token.TokenClaims.ACTOR_ID_CLAIM_NAME;
|
import static com.datahub.authentication.token.TokenClaims.*;
|
||||||
import static com.datahub.authentication.token.TokenClaims.ACTOR_TYPE_CLAIM_NAME;
|
|
||||||
import static com.datahub.authentication.token.TokenClaims.TOKEN_TYPE_CLAIM_NAME;
|
|
||||||
import static com.datahub.authentication.token.TokenClaims.TOKEN_VERSION_CLAIM_NAME;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,7 +43,6 @@ public class StatefulTokenService extends StatelessTokenService {
|
|||||||
private final EntityService _entityService;
|
private final EntityService _entityService;
|
||||||
private final LoadingCache<String, Boolean> _revokedTokenCache;
|
private final LoadingCache<String, Boolean> _revokedTokenCache;
|
||||||
private final String salt;
|
private final String salt;
|
||||||
private final MessageDigest sha256;
|
|
||||||
|
|
||||||
public StatefulTokenService(@Nonnull final String signingKey, @Nonnull final String signingAlgorithm,
|
public StatefulTokenService(@Nonnull final String signingKey, @Nonnull final String signingAlgorithm,
|
||||||
@Nullable final String iss, @Nonnull final EntityService entityService, @Nonnull final String salt) {
|
@Nullable final String iss, @Nonnull final EntityService entityService, @Nonnull final String salt) {
|
||||||
@ -65,11 +59,6 @@ public class StatefulTokenService extends StatelessTokenService {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.salt = salt;
|
this.salt = salt;
|
||||||
try {
|
|
||||||
this.sha256 = MessageDigest.getInstance("SHA-256");
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
throw new RuntimeException("Unable to get SHA-256 algorithm.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -179,14 +168,6 @@ public class StatefulTokenService extends StatelessTokenService {
|
|||||||
throw new TokenException("Access token no longer exists");
|
throw new TokenException("Access token no longer exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isTokenRevoked(@Nonnull String hashToken) {
|
|
||||||
try {
|
|
||||||
return _revokedTokenCache.get(hashToken);
|
|
||||||
} catch (ExecutionException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hashes the input after salting it.
|
* Hashes the input after salting it.
|
||||||
*/
|
*/
|
||||||
@ -194,7 +175,7 @@ public class StatefulTokenService extends StatelessTokenService {
|
|||||||
final byte[] saltingKeyBytes = this.salt.getBytes();
|
final byte[] saltingKeyBytes = this.salt.getBytes();
|
||||||
final byte[] inputBytes = input.getBytes();
|
final byte[] inputBytes = input.getBytes();
|
||||||
final byte[] concatBytes = ArrayUtils.addAll(inputBytes, saltingKeyBytes);
|
final byte[] concatBytes = ArrayUtils.addAll(inputBytes, saltingKeyBytes);
|
||||||
final byte[] bytes = sha256.digest(concatBytes);
|
final byte[] bytes = DigestUtils.sha256(concatBytes);
|
||||||
return Base64.getEncoder().encodeToString(bytes);
|
return Base64.getEncoder().encodeToString(bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user