diff --git a/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppe.java b/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppe.java new file mode 100644 index 000000000..92d809605 --- /dev/null +++ b/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppe.java @@ -0,0 +1,15 @@ +package no.nav.vedtak.sikkerhet.kontekst; + +public enum AnsattGruppe { + + SAKSBEHANDLER, + BESLUTTER, + OVERSTYRER, + OPPGAVESTYRER, + VEILEDER, + DRIFTER, + FORTROLIG, // Aka Kode7 + STRENGTFORTROLIG, // Aka Kode6 + SKJERMET // Aka EgenAnsatt + +} diff --git a/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProvider.java b/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProvider.java new file mode 100644 index 000000000..701ed4666 --- /dev/null +++ b/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProvider.java @@ -0,0 +1,141 @@ +package no.nav.vedtak.sikkerhet.kontekst; + +import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.Properties; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import no.nav.foreldrepenger.konfig.Environment; + +public class AnsattGruppeProvider { + + private static final Logger LOG = LoggerFactory.getLogger(AnsattGruppeProvider.class); + private static final Environment ENV = Environment.current(); + private static final String SUFFIX = ".properties"; + + private static final Map PROPERTY_NAME = Map.of( + AnsattGruppe.SAKSBEHANDLER, "gruppe.oid.saksbehandler", + AnsattGruppe.BESLUTTER, "gruppe.oid.beslutter", + AnsattGruppe.OVERSTYRER, "gruppe.oid.overstyrer", + AnsattGruppe.VEILEDER, "gruppe.oid.veileder", + AnsattGruppe.OPPGAVESTYRER, "gruppe.oid.oppgavestyrer", + AnsattGruppe.DRIFTER, "gruppe.oid.drifter", + AnsattGruppe.FORTROLIG, "gruppe.oid.fortrolig", + AnsattGruppe.STRENGTFORTROLIG, "gruppe.oid.strengtfortrolig", + AnsattGruppe.SKJERMET, "gruppe.oid.skjermet" + ); + + private static final Map PROPERTY_NAME_REVERSE = PROPERTY_NAME.entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey)); + + private static AnsattGruppeProvider INSTANCE; + + private final Map ansattGruppeOid = new LinkedHashMap<>(); + private final Map oidAnsattGruppe = new LinkedHashMap<>(); + + + private AnsattGruppeProvider() { + this(init()); + } + + private AnsattGruppeProvider(Map gruppeOidMap) { + this.ansattGruppeOid.putAll(gruppeOidMap); + gruppeOidMap.forEach((k,v) -> oidAnsattGruppe.put(v, k)); + } + + public static synchronized AnsattGruppeProvider instance() { + var inst = INSTANCE; + if (inst == null) { + inst = new AnsattGruppeProvider(); + INSTANCE = inst; + } + return INSTANCE; + } + + // Test usage only + static synchronized void refresh() { + INSTANCE = new AnsattGruppeProvider(); + } + + public UUID getAnsattGruppeOid(AnsattGruppe gruppe) { + return ansattGruppeOid.get(gruppe); + } + + public AnsattGruppe getAnsattGruppeFra(String value) { + return Optional.ofNullable(value).map(AnsattGruppeProvider::safeUuidFraString).map(this::getAnsattGruppeFra).orElse(null); + } + + public Set getAnsattGrupperFraStrings(List values) { + return values.stream().map(this::getAnsattGruppeFra).filter(Objects::nonNull).collect(Collectors.toSet()); + } + + public AnsattGruppe getAnsattGruppeFra(UUID value) { + return Optional.ofNullable(value).map(oidAnsattGruppe::get).orElse(null); + } + + public Set getAnsattGrupperFra(List values) { + return values.stream().map(this::getAnsattGruppeFra).filter(Objects::nonNull).collect(Collectors.toSet()); + } + + + private static Map init() { + Map resultat = new LinkedHashMap<>(); + lesFraResource(getInfix(), new Properties()) + .forEach((k, v) -> resultat.put(PROPERTY_NAME_REVERSE.get(k.toString()), UUID.fromString(v.toString()))); + resultat.putAll(lesFraEnv()); + return resultat; + } + + private static Map lesFraEnv() { + Map resultat = new LinkedHashMap<>(); + Arrays.stream(AnsattGruppe.values()) + .forEach(ag -> Optional.ofNullable(PROPERTY_NAME.get(ag)).map(ENV::getProperty).map(AnsattGruppeProvider::safeUuidFraString) + .ifPresent(e -> resultat.put(ag, e))); + return resultat; + } + + private static Properties lesFraResource(String infix, Properties p) { + if (infix == null) { + return p; + } + String navn = AnsattGruppeProvider.class.getSimpleName().toLowerCase() + infix + SUFFIX; + try (var is = AnsattGruppeProvider.class.getResourceAsStream(navn)) { + if (is != null) { + LOG.info("Laster groups fra {}", navn); + p.load(is); + return p; + } + } catch (IOException e) { + LOG.info("Propertyfil {} ikke lesbar", navn); + } + LOG.info("Propertyfil {} ikke funnet", navn); + return p; + } + + private static String getInfix() { + var cluster = Environment.current().getCluster(); + if (cluster.isLocal()) { + return "-vtp"; + } + return cluster.isProd() ? "-prod" : "-dev"; + } + + private static UUID safeUuidFraString(String string) { + try { + return UUID.fromString(string); + } catch (Exception e) { + return null; + } + } + +} diff --git a/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/Groups.java b/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/Groups.java deleted file mode 100644 index 9dc42e961..000000000 --- a/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/Groups.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.nav.vedtak.sikkerhet.kontekst; - -public enum Groups { - SAKSBEHANDLER, - BESLUTTER, - OVERSTYRER, - OPPGAVESTYRER, - VEILEDER, - DRIFT, - FORTROLIG, - STRENGTFORTROLIG, - SKJERMET -} diff --git a/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/GroupsProvider.java b/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/GroupsProvider.java deleted file mode 100644 index 49c9372d1..000000000 --- a/felles/kontekst/src/main/java/no/nav/vedtak/sikkerhet/kontekst/GroupsProvider.java +++ /dev/null @@ -1,93 +0,0 @@ -package no.nav.vedtak.sikkerhet.kontekst; - -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Properties; -import java.util.Set; -import java.util.stream.Collectors; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import no.nav.foreldrepenger.konfig.Environment; - -public class GroupsProvider { - - private static final Logger LOG = LoggerFactory.getLogger(GroupsProvider.class); - private static final String SUFFIX = ".properties"; - - private static GroupsProvider INSTANCE; - - private final Properties properties; - private final Map reverse; - - - private GroupsProvider() { - this(init()); - } - - private GroupsProvider(Properties properties) { - this.properties = properties; - this.reverse = new HashMap<>(); - properties.forEach((k,v) -> reverse.put((String) v, Groups.valueOf(((String) k).toUpperCase()))); - } - - public static synchronized GroupsProvider instance() { - var inst = INSTANCE; - if (inst == null) { - inst = new GroupsProvider(); - INSTANCE = inst; - } - return INSTANCE; - } - - public String getGroupValue(Groups group) { - return (String) properties.get(group.name().toLowerCase()); - } - - public Groups getGroupFrom(String value) { - return Optional.ofNullable(value).map(reverse::get).orElse(null); - } - - public Set getGroupsFrom(List values) { - return values.stream().map(reverse::get).filter(Objects::nonNull).collect(Collectors.toSet()); - } - - private static Properties init() { - var c = new Properties(); - lesFra(getInfix(), new Properties()) - .forEach((k, v) -> c.put(k.toString().toLowerCase(), v.toString())); - return c; - } - - private static Properties lesFra(String infix, Properties p) { - if (infix == null) { - return p; - } - String navn = GroupsProvider.class.getSimpleName().toLowerCase() + infix + SUFFIX; - try (var is = GroupsProvider.class.getResourceAsStream(navn)) { - if (is != null) { - LOG.info("Laster groups fra {}", navn); - p.load(is); - return p; - } - } catch (IOException e) { - LOG.info("Propertyfil {} ikke lesbar", navn); - } - LOG.info("Propertyfil {} ikke funnet", navn); - return p; - } - - private static String getInfix() { - var cluster = Environment.current().getCluster(); - if (cluster.isLocal()) { - return "-vtp"; - } - return cluster.isProd() ? "-prod" : "-dev"; - } - -} diff --git a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-dev.properties b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-dev.properties new file mode 100644 index 000000000..78121a1bd --- /dev/null +++ b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-dev.properties @@ -0,0 +1,6 @@ +gruppe.oid.saksbehandler=27e77109-fef2-48ce-a174-269074490353 +gruppe.oid.beslutter=6e31f9db-7e46-409d-809c-143d3863e4f6 +gruppe.oid.overstyrer=542269ee-090b-4017-bbcc-6791580290ac +gruppe.oid.oppgavestyrer=e6508a2a-2e74-450e-ad24-eb1b2b4625c6 +gruppe.oid.veileder=8cddda87-0a22-4d35-9186-a2c32a6ab450 +gruppe.oid.drifter=f1b82579-c5b5-4617-9673-8ace5ff67f63 diff --git a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-prod.properties b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-prod.properties new file mode 100644 index 000000000..d0ffae151 --- /dev/null +++ b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-prod.properties @@ -0,0 +1,6 @@ +gruppe.oid.saksbehandler=73107205-17ec-4a07-a56e-e0a8542f90c9 +gruppe.oid.beslutter=237ec744-da1f-455b-a794-b2d59c7ce7ee +gruppe.oid.overstyrer=8200240e-d76d-4d48-a655-728d1d8c3641 +gruppe.oid.oppgavestyrer=1a59da27-4c55-4a9d-8480-6abd1a856cd2 +gruppe.oid.veileder=77f05833-ebfd-45fb-8be7-88eca8e7418f +gruppe.oid.drifter=0d226374-4748-4367-a38a-062dcad70034 diff --git a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-vtp.properties b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-vtp.properties new file mode 100644 index 000000000..918f1fd03 --- /dev/null +++ b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/ansattgruppeprovider-vtp.properties @@ -0,0 +1,6 @@ +gruppe.oid.saksbehandler=eb211c0d-9ca6-467f-8863-9def2cc06fd3 +gruppe.oid.beslutter=803b1fd5-27a0-46a2-b1b3-7152f44128b4 +gruppe.oid.overstyrer=503f0cae-5bcd-484b-949c-a7e92d712858 +gruppe.oid.oppgavestyrer=d18989ec-5e07-494b-ad96-0c1f0c76de53 +gruppe.oid.veileder=edfe14fe-9a34-4ecb-8840-536ac2bc2818 +gruppe.oid.drifter=89c71f0c-ca57-4e6f-8545-990f9e24c762 diff --git a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-dev.properties b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-dev.properties deleted file mode 100644 index 15a38ce44..000000000 --- a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-dev.properties +++ /dev/null @@ -1,6 +0,0 @@ -saksbehandler=27e77109-fef2-48ce-a174-269074490353 -beslutter=6e31f9db-7e46-409d-809c-143d3863e4f6 -overstyrer=542269ee-090b-4017-bbcc-6791580290ac -oppgavestyrer=e6508a2a-2e74-450e-ad24-eb1b2b4625c6 -veileder=8cddda87-0a22-4d35-9186-a2c32a6ab450 -drift=f1b82579-c5b5-4617-9673-8ace5ff67f63 diff --git a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-prod.properties b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-prod.properties deleted file mode 100644 index 8b73650ad..000000000 --- a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-prod.properties +++ /dev/null @@ -1,6 +0,0 @@ -saksbehandler=73107205-17ec-4a07-a56e-e0a8542f90c9 -beslutter=237ec744-da1f-455b-a794-b2d59c7ce7ee -overstyrer=8200240e-d76d-4d48-a655-728d1d8c3641 -oppgavestyrer=1a59da27-4c55-4a9d-8480-6abd1a856cd2 -veileder=77f05833-ebfd-45fb-8be7-88eca8e7418f -drift=0d226374-4748-4367-a38a-062dcad70034 diff --git a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-vtp.properties b/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-vtp.properties deleted file mode 100644 index cc877704f..000000000 --- a/felles/kontekst/src/main/resources/no/nav/vedtak/sikkerhet/kontekst/groupsprovider-vtp.properties +++ /dev/null @@ -1,6 +0,0 @@ -saksbehandler=eb211c0d-9ca6-467f-8863-9def2cc06fd3 -beslutter=803b1fd5-27a0-46a2-b1b3-7152f44128b4 -overstyrer=503f0cae-5bcd-484b-949c-a7e92d712858 -oppgavestyrer=d18989ec-5e07-494b-ad96-0c1f0c76de53 -veileder=edfe14fe-9a34-4ecb-8840-536ac2bc2818 -drift=89c71f0c-ca57-4e6f-8545-990f9e24c762 diff --git a/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProviderEnvTest.java b/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProviderEnvTest.java new file mode 100644 index 000000000..fa66ff9f1 --- /dev/null +++ b/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProviderEnvTest.java @@ -0,0 +1,47 @@ +package no.nav.vedtak.sikkerhet.kontekst; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.Set; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** + * Tester at environment tar presedens over oids fra bundlete ressursfiler + */ +class AnsattGruppeProviderEnvTest { + + @BeforeAll + public static void setUp() { + System.setProperty("gruppe.oid.beslutter", "6e31f9db-7e46-409d-809c-143d3863e4f6"); + System.setProperty("gruppe.oid.overstyrer", "542269ee-090b-4017-bbcc-6791580290ac"); + } + + @AfterAll + public static void teardown() { + System.clearProperty("gruppe.oid.beslutter"); + System.clearProperty("gruppe.oid.overstyrer"); + } + + + @Test + void testStringGroupsForLocal() { + AnsattGruppeProvider.refresh(); + var provider = AnsattGruppeProvider.instance(); + assertThat(provider.getAnsattGruppeOid(AnsattGruppe.BESLUTTER)).isNotNull(); + assertThat(provider.getAnsattGruppeOid(AnsattGruppe.BESLUTTER).toString()).isEqualTo("6e31f9db-7e46-409d-809c-143d3863e4f6"); + assertThat(provider.getAnsattGruppeFra("89c71f0c-ca57-4e6f-8545-990f9e24c762")).isEqualTo(AnsattGruppe.DRIFTER); + var grupper = List.of("eb211c0d-9ca6-467f-8863-9def2cc06fd3", "542269ee-090b-4017-bbcc-6791580290ac"); + assertThat(provider.getAnsattGrupperFraStrings(grupper)).containsAll(Set.of(AnsattGruppe.SAKSBEHANDLER, AnsattGruppe.OVERSTYRER)); + + assertThat(provider.getAnsattGruppeFra((String) null)).isNull(); + assertThat(provider.getAnsattGruppeFra("forsvarer")).isNull(); + assertThat(provider.getAnsattGrupperFraStrings(List.of("forsvarer"))).isEmpty(); + } + + + +} diff --git a/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProviderTest.java b/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProviderTest.java new file mode 100644 index 000000000..2a2c6c4f1 --- /dev/null +++ b/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/AnsattGruppeProviderTest.java @@ -0,0 +1,44 @@ +package no.nav.vedtak.sikkerhet.kontekst; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.junit.jupiter.api.Test; + +class AnsattGruppeProviderTest { + + @Test + void testStringGroupsForLocal() { + AnsattGruppeProvider.refresh(); + var provider = AnsattGruppeProvider.instance(); + assertThat(provider.getAnsattGruppeOid(AnsattGruppe.BESLUTTER)).isNotNull(); + assertThat(provider.getAnsattGruppeOid(AnsattGruppe.BESLUTTER).toString()).isEqualTo("803b1fd5-27a0-46a2-b1b3-7152f44128b4"); + assertThat(provider.getAnsattGruppeFra("89c71f0c-ca57-4e6f-8545-990f9e24c762")).isEqualTo(AnsattGruppe.DRIFTER); + var grupper = List.of("eb211c0d-9ca6-467f-8863-9def2cc06fd3", "503f0cae-5bcd-484b-949c-a7e92d712858"); + assertThat(provider.getAnsattGrupperFraStrings(grupper)).containsAll(Set.of(AnsattGruppe.SAKSBEHANDLER, AnsattGruppe.OVERSTYRER)); + + assertThat(provider.getAnsattGruppeFra((String) null)).isNull(); + assertThat(provider.getAnsattGruppeFra("forsvarer")).isNull(); + assertThat(provider.getAnsattGrupperFraStrings(List.of("forsvarer"))).isEmpty(); + } + + @Test + void testUuidGroupsForLocal() { + AnsattGruppeProvider.refresh(); + var provider = AnsattGruppeProvider.instance(); + assertThat(provider.getAnsattGruppeOid(AnsattGruppe.BESLUTTER)).isNotNull(); + assertThat(provider.getAnsattGruppeOid(AnsattGruppe.BESLUTTER)).isEqualTo(UUID.fromString("803b1fd5-27a0-46a2-b1b3-7152f44128b4")); + assertThat(provider.getAnsattGruppeFra(UUID.fromString("89c71f0c-ca57-4e6f-8545-990f9e24c762"))).isEqualTo(AnsattGruppe.DRIFTER); + var grupper = List.of(UUID.fromString("eb211c0d-9ca6-467f-8863-9def2cc06fd3"), UUID.fromString("503f0cae-5bcd-484b-949c-a7e92d712858")); + assertThat(provider.getAnsattGrupperFra(grupper)).containsAll(Set.of(AnsattGruppe.SAKSBEHANDLER, AnsattGruppe.OVERSTYRER)); + + assertThat(provider.getAnsattGruppeFra((UUID) null)).isNull(); + assertThat(provider.getAnsattGruppeFra(UUID.fromString("eb211c0d-9ca6-467f-8863-9def2cc06fd4"))).isNull(); + assertThat(provider.getAnsattGrupperFra(List.of(UUID.fromString("eb211c0d-9ca6-467f-8863-9def2cc06fd4")))).isEmpty(); + } + + +} diff --git a/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/GroupsProviderTest.java b/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/GroupsProviderTest.java deleted file mode 100644 index af1c41f69..000000000 --- a/felles/kontekst/src/test/java/no/nav/vedtak/sikkerhet/kontekst/GroupsProviderTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package no.nav.vedtak.sikkerhet.kontekst; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.List; -import java.util.Set; - -import org.junit.jupiter.api.Test; - -class GroupsProviderTest { - - @Test - void testGroupsForLocal() { - var provider = GroupsProvider.instance(); - assertThat(provider.getGroupValue(Groups.BESLUTTER)).isEqualTo("803b1fd5-27a0-46a2-b1b3-7152f44128b4"); - assertThat(provider.getGroupFrom("89c71f0c-ca57-4e6f-8545-990f9e24c762")).isEqualTo(Groups.DRIFT); - var grupper = List.of("eb211c0d-9ca6-467f-8863-9def2cc06fd3", "503f0cae-5bcd-484b-949c-a7e92d712858"); - assertThat(provider.getGroupsFrom(grupper)).containsAll(Set.of(Groups.SAKSBEHANDLER, Groups.OVERSTYRER)); - - assertThat(provider.getGroupFrom(null)).isNull(); - assertThat(provider.getGroupFrom("forsvarer")).isNull(); - assertThat(provider.getGroupsFrom(List.of("forsvarer"))).isEmpty(); - } - - -} diff --git a/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/kontekst/RequestKontekst.java b/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/kontekst/RequestKontekst.java index f90450236..bd7a7285b 100644 --- a/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/kontekst/RequestKontekst.java +++ b/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/kontekst/RequestKontekst.java @@ -12,16 +12,16 @@ public final class RequestKontekst extends BasisKontekst { private final OpenIDToken token; private UUID oid; - private final Set grupper; + private final Set grupper; - private RequestKontekst(String uid, String kompaktUid, IdentType identType, String consumerId, OpenIDToken token, UUID oid, Set grupper) { + private RequestKontekst(String uid, String kompaktUid, IdentType identType, String consumerId, OpenIDToken token, UUID oid, Set grupper) { super(SikkerhetContext.REQUEST, uid, kompaktUid, identType, consumerId); this.token = token; this.oid = oid; this.grupper = new HashSet<>(grupper); } - public static RequestKontekst forRequest(String uid, String kompaktUid, IdentType identType, OpenIDToken token, UUID oid, Set grupper) { + public static RequestKontekst forRequest(String uid, String kompaktUid, IdentType identType, OpenIDToken token, UUID oid, Set grupper) { var konsumentId = Optional.ofNullable(MDCOperations.getConsumerId()).orElse(uid); return new RequestKontekst(uid, kompaktUid, identType, konsumentId, token, oid, grupper); } @@ -34,11 +34,11 @@ public UUID getOid() { return oid; } - public Set getGrupper() { + public Set getGrupper() { return grupper; } - public boolean harGruppe(Groups gruppe) { + public boolean harGruppe(AnsattGruppe gruppe) { return grupper.contains(gruppe); } } diff --git a/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidator.java b/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidator.java index 9970d263c..756ec2f13 100644 --- a/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidator.java +++ b/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidator.java @@ -17,7 +17,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import no.nav.vedtak.sikkerhet.kontekst.GroupsProvider; +import no.nav.vedtak.sikkerhet.kontekst.AnsattGruppeProvider; import no.nav.vedtak.sikkerhet.kontekst.IdentType; import no.nav.vedtak.sikkerhet.oidc.config.AzureProperty; import no.nav.vedtak.sikkerhet.oidc.config.OpenIDConfiguration; @@ -169,7 +169,7 @@ private OidcTokenValidatorResult validateAzure(JwtClaims claims, String subject) var brukSubject = Optional.ofNullable(JwtUtil.getStringClaim(claims, AzureProperty.NAV_IDENT)).orElse(subject); registrer(clientName, "Saksbehandler", OpenIDProvider.AZUREAD, IdentType.InternBruker); var grupper = Optional.ofNullable(JwtUtil.getStringListClaim(claims, AzureProperty.GRUPPER)) - .map(arr -> GroupsProvider.instance().getGroupsFrom(arr)) + .map(arr -> AnsattGruppeProvider.instance().getAnsattGrupperFraStrings(arr)) .orElse(Set.of()); return OidcTokenValidatorResult.valid(brukSubject, IdentType.InternBruker, oid, grupper, JwtUtil.getExpirationTimeRaw(claims)); } diff --git a/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorResult.java b/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorResult.java index dce841e40..3bd030387 100644 --- a/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorResult.java +++ b/felles/oidc/src/main/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorResult.java @@ -3,11 +3,11 @@ import java.util.Set; import java.util.UUID; -import no.nav.vedtak.sikkerhet.kontekst.Groups; +import no.nav.vedtak.sikkerhet.kontekst.AnsattGruppe; import no.nav.vedtak.sikkerhet.kontekst.IdentType; public record OidcTokenValidatorResult(boolean isValid, String errorMessage, String subject, IdentType identType, - String compactSubject, UUID oid, Set grupper, long expSeconds) { + String compactSubject, UUID oid, Set grupper, long expSeconds) { private static final String NO_CLAIMS = "Can't get claims from an invalid token"; @@ -19,7 +19,7 @@ public static OidcTokenValidatorResult valid(String subject, IdentType identType return new OidcTokenValidatorResult(true, null, subject, identType, subject, null, Set.of(), expSeconds); } - public static OidcTokenValidatorResult valid(String subject, IdentType identType, UUID oid, Set grupper, long expSeconds) { + public static OidcTokenValidatorResult valid(String subject, IdentType identType, UUID oid, Set grupper, long expSeconds) { return new OidcTokenValidatorResult(true, null, subject, identType, subject, oid, grupper, expSeconds); } @@ -57,7 +57,7 @@ public IdentType getIdentType() { return identType; } - public Set getGrupper() { + public Set getGrupper() { if (!isValid) { throw new IllegalArgumentException(NO_CLAIMS); } diff --git a/felles/oidc/src/test/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorTest.java b/felles/oidc/src/test/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorTest.java index 57508250e..84737d10d 100644 --- a/felles/oidc/src/test/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorTest.java +++ b/felles/oidc/src/test/java/no/nav/vedtak/sikkerhet/oidc/validator/OidcTokenValidatorTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import no.nav.vedtak.sikkerhet.kontekst.Groups; +import no.nav.vedtak.sikkerhet.kontekst.AnsattGruppe; import no.nav.vedtak.sikkerhet.oidc.config.AzureProperty; import no.nav.vedtak.sikkerhet.oidc.config.OpenIDProvider; import no.nav.vedtak.sikkerhet.oidc.config.impl.OidcProviderConfig; @@ -189,7 +189,7 @@ void skal_ekstrahere_grupper_fra_aad_obo_med_navident_med_grupper() { assertValid(result); assertThat(result.getSubject()).isEqualTo(ident); assertThat(result.oid()).isEqualTo(oid); - assertThat(result.grupper()).containsAll(List.of(Groups.SAKSBEHANDLER, Groups.OPPGAVESTYRER)); + assertThat(result.grupper()).containsAll(List.of(AnsattGruppe.SAKSBEHANDLER, AnsattGruppe.OPPGAVESTYRER)); assertThat(result.getCompactSubject()).isEqualTo(ident); } @@ -233,7 +233,7 @@ void skal_ekstrahere_grupper_fra_aad_obo_med_navident_med_uglydig_gruppe() { OidcTokenValidatorResult result = tokenValidator.validate(token); assertValid(result); assertThat(result.getSubject()).isEqualTo(ident); - assertThat(result.grupper()).containsExactly(Groups.SAKSBEHANDLER); + assertThat(result.grupper()).containsExactly(AnsattGruppe.SAKSBEHANDLER); assertThat(result.getCompactSubject()).isEqualTo(ident); }