diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/AuthenticationConfiguration.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/AuthenticationConfiguration.java index 0f32a898b20..d365d5ded00 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/AuthenticationConfiguration.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/AuthenticationConfiguration.java @@ -22,6 +22,7 @@ public class AuthenticationConfiguration { @Getter @Setter private String authority; @Getter @Setter private String clientId; @Getter @Setter private String callbackUrl; + @Getter @Setter private String jwtEmail = "email"; @Override public String toString() { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/JwtFilter.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/JwtFilter.java index c6542520bca..18c04fb0c23 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/JwtFilter.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/security/JwtFilter.java @@ -40,12 +40,14 @@ public class JwtFilter implements ContainerRequestFilter { public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String TOKEN_PREFIX = "Bearer"; private String publicKeyUri; + private String jwtEmail; @SuppressWarnings("unused") private JwtFilter() {} public JwtFilter(AuthenticationConfiguration authenticationConfiguration) { this.publicKeyUri = authenticationConfiguration.getPublicKey(); + this.jwtEmail = authenticationConfiguration.getJwtEmail(); } @SneakyThrows @@ -79,7 +81,9 @@ public class JwtFilter implements ContainerRequestFilter { throw new AuthenticationException("Invalid token"); } String authorizedEmail; - if (jwt.getClaims().get("email") != null) { + if (jwt.getClaims().get(jwtEmail) != null) { + authorizedEmail = jwt.getClaim(jwtEmail).as(TextNode.class).asText(); + } else if (jwt.getClaims().get("email") != null) { authorizedEmail = jwt.getClaim("email").as(TextNode.class).asText(); } else if (jwt.getClaims().get("preferred_username") != null) { authorizedEmail = jwt.getClaim("preferred_username").as(TextNode.class).asText();