Skip to content

Commit d6932c5

Browse files
committed
Improve MS graph API
1 parent 3de85fd commit d6932c5

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/auth/impl/OpenIDAuthenticationBackend.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,15 @@ public LogoutSuccessHandler getLogoutSuccessHandler() {
291291

292292
protected GrantedAuthoritiesMapper createAuthoritiesMapper() {
293293
if (microsoftGraphGroupFetcher != null) {
294-
log.info("Using MS graph");
295294
return authorities -> {
296295
for (GrantedAuthority auth : authorities) {
297296
if (auth instanceof OidcUserAuthority) {
298297
OidcIdToken idToken = ((OidcUserAuthority) auth).getIdToken();
299-
return microsoftGraphGroupFetcher.fetchGroups(idToken.getSubject());
298+
if (!idToken.hasClaim("oid")) {
299+
log.warn("Required claim 'oid' not found, make sure to include the 'profile' scope - continuing without groups");
300+
return Set.of();
301+
}
302+
return microsoftGraphGroupFetcher.fetchGroups(idToken.getClaimAsString("oid"));
300303
}
301304
}
302305
return Set.of();

src/main/java/eu/openanalytics/containerproxy/auth/impl/msgraph/MicrosoftGraphGroupFetcher.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
import java.util.HashSet;
4444
import java.util.List;
45+
import java.util.Objects;
4546
import java.util.Set;
4647

4748
@ConditionalOnProperty("proxy.ms-graph.client-id")
@@ -106,11 +107,14 @@ public Set<GrantedAuthority> fetchGroups(String userId) {
106107
}
107108

108109
Set<GrantedAuthority> result = new HashSet<>(memberships.value.stream().map(m -> {
110+
if (m == null || m.displayName == null) {
111+
return null;
112+
}
109113
String mappedRole = m.displayName
110114
.toUpperCase()
111115
.startsWith("ROLE_") ? m.displayName : "ROLE_" + m.displayName;
112116
return new SimpleGrantedAuthority(mappedRole.toUpperCase());
113-
}).toList());
117+
}).filter(Objects::nonNull).toList());
114118
logger.debug("Received groups from Microsoft Graph api for user: {}, groups: {}", userId, result);
115119
return result;
116120
} catch (Exception e) {

0 commit comments

Comments
 (0)