Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bruk idtyp for å resolve userrole på Azure(Entra) tokens #718

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
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 @@ -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.
Expand All @@ -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;
}
Expand Down
Loading