Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,14 @@ private void rotateSecret(ClientCRUDContext crudContext,
}

private void updatedSecretExpiration(OIDCClientSecretConfigWrapper clientConfigWrapper) {
clientConfigWrapper.setClientSecretExpirationTime(
Time.currentTime() + configuration.getExpirationPeriod());
logger.debugv("A new secret expiration is configured for client {0}. Expires at {1}", clientConfigWrapper.getId(), Time.toDate(clientConfigWrapper.getClientSecretExpirationTime()));
if (configuration.getExpirationPeriod()==0) {
clientConfigWrapper.setClientSecretExpirationTime(null);
logger.debugv("Secret expiration removed for client {0}", clientConfigWrapper.getId());
} else {
clientConfigWrapper.setClientSecretExpirationTime(
Time.currentTime() + configuration.getExpirationPeriod());
logger.debugv("A new secret expiration is configured for client {0}. Expires at {1}", clientConfigWrapper.getId(), Time.toDate(clientConfigWrapper.getClientSecretExpirationTime()));
}
}

private void updateClientConfigProperties(OIDCClientSecretConfigWrapper clientConfigWrapper) {
Expand Down Expand Up @@ -197,21 +202,22 @@ public static class Configuration extends ClientPolicyExecutorConfigurationRepre
@Override
public boolean validateConfig() {
logger.debugv("Validating configuration: [ expirationPeriod: {0}, rotatedExpirationPeriod: {1}, remainExpirationPeriod: {2} ]", expirationPeriod, rotatedExpirationPeriod, remainExpirationPeriod);
// expiration must be a positive value greater than 0 (seconds)
if (expirationPeriod <= 0) {
// expiration must be a positive value greater than 0 (seconds), or 0 for no expiration

if (expirationPeriod < 0) {
return false;
}

// rotated secret duration could not be bigger than the main secret
if (rotatedExpirationPeriod > expirationPeriod) {
if (expirationPeriod > 0 && rotatedExpirationPeriod > expirationPeriod) {
return false;
}

// remaining secret expiration period could not be bigger than main secret
if (remainExpirationPeriod > expirationPeriod) {
if (expirationPeriod > 0 && remainExpirationPeriod > expirationPeriod) {
return false;
}

return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class ClientSecretRotationExecutorFactory implements ClientPolicyExecutor
static {
ProviderConfigProperty secretExpirationPeriod = new ProviderConfigProperty(
SECRET_EXPIRATION_PERIOD, "Secret expiration",
"When the secret is rotated. The time frequency for generating a new secret. (In seconds)",
"When the secret is rotated. The time frequency for generating a new secret. When this is set to 0, the new secret will have no expiration (In seconds)",
ProviderConfigProperty.STRING_TYPE, DEFAULT_SECRET_EXPIRATION_PERIOD);
configProperties.add(secretExpirationPeriod);

Expand Down