diff --git a/auth/src/main/java/no/nav/common/auth/oidc/filter/AzureAdUserRoleResolver.java b/auth/src/main/java/no/nav/common/auth/oidc/filter/AzureAdUserRoleResolver.java index d8247f871..51d786e68 100644 --- a/auth/src/main/java/no/nav/common/auth/oidc/filter/AzureAdUserRoleResolver.java +++ b/auth/src/main/java/no/nav/common/auth/oidc/filter/AzureAdUserRoleResolver.java @@ -3,6 +3,8 @@ import com.nimbusds.jwt.JWTClaimsSet; import no.nav.common.auth.context.UserRole; +import java.util.Optional; + /** * UserRole resolver for Azure AD (Skal ikke brukes med andre OIDC providers). * Resolveren sjekker om tokenet er på vegne av en bruker (INTERN), eller om tokenet er et system-til-system (SYSTEM) token og returnerer riktig rolle. @@ -17,14 +19,13 @@ public class AzureAdUserRoleResolver implements UserRoleResolver { @Override public UserRole resolve(JWTClaimsSet jwtClaimsSet) { - var sub = jwtClaimsSet.getClaim("sub"); - var oid = jwtClaimsSet.getClaim("oid"); - - if (sub == null || oid == null) { - throw new IllegalArgumentException("Kunne ikke resolve UserRole. sub eller oid i token er null"); - } - - return sub.equals(oid) + // Skal ikke lenger bruke oid == sub for å sjekke om token er m2m + // https://docs.nais.io/auth/entra-id/reference/?h=idtyp#claims + var isMachineToMachineToken = Optional + .ofNullable(jwtClaimsSet.getClaim("idtyp")) + .map(value -> value.equals("app")) + .orElse(false); + return isMachineToMachineToken ? UserRole.SYSTEM : UserRole.INTERN; }