Skip to content
Merged
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
6 changes: 0 additions & 6 deletions apiml/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,6 @@ spring:
frame-options: sameorigin
application:
name: gateway
security:
oauth2:
client:
registration:
okta:
redirectUri: "{baseUrl}/gateway/{action}/oauth2/code/{registrationId}"
main:
allow-circular-references: true
banner-mode: ${apiml.banner:"off"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,31 @@
import lombok.Data;
import lombok.Value;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

/**
* Reads OIDC Client configuration from environment variables or application configuration file.
* Reads OIDC Client configuration from Zowe launcher environment variables or application configuration file.
*/
@Data
@Component
@Slf4j
@ConfigurationProperties(prefix = "spring.security.oauth2.client", ignoreInvalidFields = true)
public class ClientConfiguration {

private static final String DEFAULT_REDIRECT_URI = "{baseUrl}/gateway/{action}/oauth2/code/{registrationId}";
private static final String SYSTEM_ENV_PREFIX = "ZWE_configs_spring_security_oauth2_client_";
private static final Pattern REGISTRATION_ID_PATTERN = Pattern.compile(
"^" + SYSTEM_ENV_PREFIX + "(registration|provider)_([^_]+)_.*$"
Expand All @@ -42,10 +49,10 @@ public class ClientConfiguration {
public static final String REGISTRATION_ENV_TYPE = "registration";
public static final String PROVIDER_ENV_TYPE = "provider";


private Map<String, Registration> registration = new HashMap<>();
private Map<String, Provider> provider = new HashMap<>();


private String getSystemEnv(String id, String type, String name) {
StringBuilder sb = new StringBuilder();
sb.append(SYSTEM_ENV_PREFIX).append(type).append('_').append(id).append('_').append(name);
Expand Down Expand Up @@ -97,6 +104,19 @@ void updateWithSystemEnvironment() {
update(registrationId, registration.computeIfAbsent(registrationId, k -> new Registration()));
update(registrationId, provider.computeIfAbsent(registrationId, k -> new Provider()));
}
processDefaults();
}

/*
* redirectUri was originally set as a property but for Okta provider only, without it it can be a breaking change.
* This makes sure any provider has a default redirectUri if no explicit one is provided
*/
private void processDefaults() {
for (Map.Entry<String, Registration> entry : registration.entrySet()) {
if (StringUtils.isBlank(entry.getValue().getRedirectUri())) {
entry.getValue().setRedirectUri(DEFAULT_REDIRECT_URI);
}
}
}

public Map<String, Config> getConfigurations() {
Expand Down
7 changes: 0 additions & 7 deletions gateway-service/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,6 @@ spring:
frame-options: sameorigin
application:
name: gateway
security:
oauth2:
client:
registration:
okta:
redirectUri: "{baseUrl}/gateway/{action}/oauth2/code/{registrationId}"
main:
allow-circular-references: true
banner-mode: ${apiml.banner:"off"}
Expand Down Expand Up @@ -200,7 +194,6 @@ management:
include: health,info,gateway
---
spring.config.activate.on-profile: wiretap

spring:
cloud:
gateway:
Expand Down
Loading