Search in sources :

Example 6 with ScramCredential

use of org.apache.kafka.common.security.scram.ScramCredential in project apache-kafka-on-k8s by banzaicloud.

the class SaslAuthenticatorTest method updateScramCredentialCache.

@SuppressWarnings("unchecked")
private void updateScramCredentialCache(String username, String password) throws NoSuchAlgorithmException {
    for (String mechanism : (List<String>) saslServerConfigs.get(BrokerSecurityConfigs.SASL_ENABLED_MECHANISMS_CONFIG)) {
        ScramMechanism scramMechanism = ScramMechanism.forMechanismName(mechanism);
        if (scramMechanism != null) {
            ScramFormatter formatter = new ScramFormatter(scramMechanism);
            ScramCredential credential = formatter.generateCredential(password, 4096);
            credentialCache.cache(scramMechanism.mechanismName(), ScramCredential.class).put(username, credential);
        }
    }
}
Also used : ScramCredential(org.apache.kafka.common.security.scram.ScramCredential) ScramFormatter(org.apache.kafka.common.security.scram.ScramFormatter) ScramMechanism(org.apache.kafka.common.security.scram.ScramMechanism) List(java.util.List) ArrayList(java.util.ArrayList)

Example 7 with ScramCredential

use of org.apache.kafka.common.security.scram.ScramCredential in project kafka by apache.

the class ScramCredentialUtils method credentialFromString.

public static ScramCredential credentialFromString(String str) {
    Properties props = toProps(str);
    if (props.size() != 4 || !props.containsKey(SALT) || !props.containsKey(STORED_KEY) || !props.containsKey(SERVER_KEY) || !props.containsKey(ITERATIONS)) {
        throw new IllegalArgumentException("Credentials not valid: " + str);
    }
    byte[] salt = Base64.getDecoder().decode(props.getProperty(SALT));
    byte[] storedKey = Base64.getDecoder().decode(props.getProperty(STORED_KEY));
    byte[] serverKey = Base64.getDecoder().decode(props.getProperty(SERVER_KEY));
    int iterations = Integer.parseInt(props.getProperty(ITERATIONS));
    return new ScramCredential(salt, storedKey, serverKey, iterations);
}
Also used : ScramCredential(org.apache.kafka.common.security.scram.ScramCredential) Properties(java.util.Properties)

Example 8 with ScramCredential

use of org.apache.kafka.common.security.scram.ScramCredential in project kafka by apache.

the class ScramFormatter method generateCredential.

public ScramCredential generateCredential(byte[] salt, byte[] saltedPassword, int iterations) {
    try {
        byte[] clientKey = clientKey(saltedPassword);
        byte[] storedKey = storedKey(clientKey);
        byte[] serverKey = serverKey(saltedPassword);
        return new ScramCredential(salt, storedKey, serverKey, iterations);
    } catch (InvalidKeyException e) {
        throw new KafkaException("Could not create credential", e);
    }
}
Also used : ScramCredential(org.apache.kafka.common.security.scram.ScramCredential) KafkaException(org.apache.kafka.common.KafkaException) InvalidKeyException(java.security.InvalidKeyException)

Example 9 with ScramCredential

use of org.apache.kafka.common.security.scram.ScramCredential in project kafka by apache.

the class SaslAuthenticatorTest method updateScramCredentialCache.

@SuppressWarnings("unchecked")
private void updateScramCredentialCache(String username, String password) throws NoSuchAlgorithmException {
    for (String mechanism : (List<String>) saslServerConfigs.get(BrokerSecurityConfigs.SASL_ENABLED_MECHANISMS_CONFIG)) {
        ScramMechanism scramMechanism = ScramMechanism.forMechanismName(mechanism);
        if (scramMechanism != null) {
            ScramFormatter formatter = new ScramFormatter(scramMechanism);
            ScramCredential credential = formatter.generateCredential(password, 4096);
            credentialCache.cache(scramMechanism.mechanismName(), ScramCredential.class).put(username, credential);
        }
    }
}
Also used : ScramCredential(org.apache.kafka.common.security.scram.ScramCredential) ScramFormatter(org.apache.kafka.common.security.scram.internals.ScramFormatter) ScramMechanism(org.apache.kafka.common.security.scram.internals.ScramMechanism) ArrayList(java.util.ArrayList) List(java.util.List)

Example 10 with ScramCredential

use of org.apache.kafka.common.security.scram.ScramCredential in project kafka by apache.

the class ScramCredentialUtilsTest method generateCredential.

@Test
public void generateCredential() {
    ScramCredential credential1 = formatter.generateCredential("password", 4096);
    ScramCredential credential2 = formatter.generateCredential("password", 4096);
    // Random salt should ensure that the credentials persisted are different every time
    assertNotEquals(ScramCredentialUtils.credentialToString(credential1), ScramCredentialUtils.credentialToString(credential2));
}
Also used : ScramCredential(org.apache.kafka.common.security.scram.ScramCredential) Test(org.junit.jupiter.api.Test)

Aggregations

ScramCredential (org.apache.kafka.common.security.scram.ScramCredential)10 ArrayList (java.util.ArrayList)4 List (java.util.List)4 Test (org.junit.jupiter.api.Test)3 CredentialCache (org.apache.kafka.common.security.authenticator.CredentialCache)2 ScramFormatter (org.apache.kafka.common.security.scram.ScramFormatter)2 ScramMechanism (org.apache.kafka.common.security.scram.ScramMechanism)2 ScramFormatter (org.apache.kafka.common.security.scram.internals.ScramFormatter)2 ScramMechanism (org.apache.kafka.common.security.scram.internals.ScramMechanism)2 InvalidKeyException (java.security.InvalidKeyException)1 HashMap (java.util.HashMap)1 Properties (java.util.Properties)1 KafkaException (org.apache.kafka.common.KafkaException)1 DelegationTokenCache (org.apache.kafka.common.security.token.delegation.internals.DelegationTokenCache)1 BeforeEach (org.junit.jupiter.api.BeforeEach)1