diff --git a/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/consumer/PersonOrganisasjonTilgangConsumer.java b/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/consumer/AltinnTilgangServiceConsumer.java similarity index 95% rename from apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/consumer/PersonOrganisasjonTilgangConsumer.java rename to apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/consumer/AltinnTilgangServiceConsumer.java index b29097a6057..986de3c3939 100644 --- a/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/consumer/PersonOrganisasjonTilgangConsumer.java +++ b/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/consumer/AltinnTilgangServiceConsumer.java @@ -11,14 +11,14 @@ import reactor.core.publisher.Mono; @Component -public class PersonOrganisasjonTilgangConsumer { +public class AltinnTilgangServiceConsumer { private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; private final GetAuthenticatedUserId getAuthenticatedUserId; - public PersonOrganisasjonTilgangConsumer( + public AltinnTilgangServiceConsumer( Consumers consumers, TokenExchange tokenExchange, WebClient.Builder webClientBuilder, diff --git a/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/service/ValidateService.java b/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/service/ValidateService.java index 1ada4106bb8..4f39d4eb895 100644 --- a/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/service/ValidateService.java +++ b/apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/service/ValidateService.java @@ -1,7 +1,7 @@ package no.nav.testnav.apps.brukerservice.service; import lombok.RequiredArgsConstructor; -import no.nav.testnav.apps.brukerservice.consumer.PersonOrganisasjonTilgangConsumer; +import no.nav.testnav.apps.brukerservice.consumer.AltinnTilgangServiceConsumer; import no.nav.testnav.apps.brukerservice.exception.UserHasNoAccessToOrgnisasjonException; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; @@ -9,10 +9,11 @@ @Service @RequiredArgsConstructor public class ValidateService { - private final PersonOrganisasjonTilgangConsumer client; + + private final AltinnTilgangServiceConsumer altinnTilgangServiceConsumer; public Mono validateOrganiasjonsnummerAccess(String organisasjonsnummer) { - return client + return altinnTilgangServiceConsumer .getOrganisasjon(organisasjonsnummer) .doOnNext(organisasjon -> { if (!organisasjon.getOrganisasjonsnummer().equals(organisasjonsnummer)) { diff --git a/apps/oversikt-frontend/build.gradle b/apps/oversikt-frontend/build.gradle index b2e13e3acfa..5e50676ce88 100644 --- a/apps/oversikt-frontend/build.gradle +++ b/apps/oversikt-frontend/build.gradle @@ -13,6 +13,7 @@ sonarqube { dependencies { implementation "io.grpc:grpc-netty:$versions.grpc" + implementation 'no.nav.testnav.libs:data-transfer-objects' implementation "no.nav.testnav.libs:reactive-core" implementation "no.nav.testnav.libs:reactive-frontend" implementation "no.nav.testnav.libs:reactive-security" diff --git a/apps/oversikt-frontend/config.yml b/apps/oversikt-frontend/config.yml index 53082bdaa3f..a94d8e92a2e 100644 --- a/apps/oversikt-frontend/config.yml +++ b/apps/oversikt-frontend/config.yml @@ -26,65 +26,10 @@ spec: accessPolicy: outbound: rules: - - application: dolly-backend - - application: dolly-backend-dev - - application: generer-navn-service - - application: organisasjon-bestilling-service - - application: synthdata-amelding - - application: synthdata-arena-aap - - application: synthdata-arena-dagpenger - - application: synthdata-arena-meldekort - - application: synthdata-arena-tilleggsstonad - - application: synthdata-arena-tiltak - - application: synthdata-arena-vedtakshistorikk - - application: synthdata-elsam-gcp - - application: testnav-adresse-service - - application: testnav-amelding-service - - application: testnav-app-tilgang-analyse-service - - application: testnav-arbeidsforhold-service - - application: testnav-arbeidsplassencv-proxy - - application: testnav-batch-bestilling-service - - application: testnav-bruker-service - application: testnav-bruker-service-dev - - application: testnav-endringsmelding-service - - application: testnav-generer-arbeidsforhold-populasjon-service - - application: testnav-generer-organisasjon-populasjon-service - - application: testnav-generer-synt-amelding-service - - application: testnav-helsepersonell-service - - application: testnav-ident-pool - - application: testnav-inntektsmelding-generator-service - - application: testnav-inntektsmelding-service - - application: testnav-jenkins-batch-status-service - - application: testnav-joark-dokument-service - - application: testnav-kodeverk-service - - application: testnav-miljoer-service - - application: testnav-oppsummeringsdokument-service - - application: testnav-organisasjon-faste-data-service - - application: testnav-organisasjon-forvalter - - application: testnav-organisasjon-mottak-service - - application: testnav-organisasjon-service - - application: testnav-organisasjon-tilgang-service - - application: testnav-orgnummer-service - - application: testnav-pdl-forvalter - - application: testnav-pdl-forvalter-dev - - application: testnav-person-faste-data-service - - application: testnav-person-organisasjon-tilgang-service-dev - - application: testnav-person-search-service - - application: testnav-person-service - - application: testnav-skattekort-service - - application: testnav-sykemelding-api - - application: testnav-synt-sykemelding-api - - application: testnav-synt-vedtakshistorikk-service - - application: testnav-tenor-search-service - - application: testnav-tps-messaging-service - - application: testnav-varslinger-service - - application: testnav-varslinger-service-dev - - application: testnorge-profil-api + - application: testnav-app-tilgang-analyse-service - application: testnorge-profil-api-dev - - application: testnorge-tilbakemelding-api - - application: testnav-levende-arbeidsforhold-ansettelse - - application: testnav-levende-arbeidsforhold-service - - application: testnav-levende-arbeidsforhold-scheduler + - application: testnav-altinn3-tilgang-service liveness: path: /internal/isAlive initialDelay: 4 diff --git a/apps/oversikt-frontend/settings.gradle b/apps/oversikt-frontend/settings.gradle index 77232fe6e5f..b8cdf008d31 100644 --- a/apps/oversikt-frontend/settings.gradle +++ b/apps/oversikt-frontend/settings.gradle @@ -6,6 +6,7 @@ rootProject.name = 'oversikt-frontend' includeBuild "../../plugins/java" +includeBuild '../../libs/data-transfer-objects' includeBuild '../../libs/reactive-core' includeBuild '../../libs/reactive-frontend' includeBuild '../../libs/reactive-security' diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/OversiktFrontendApplicationStarter.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/OversiktFrontendApplicationStarter.java index 8efb3b07e95..d6805193226 100644 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/OversiktFrontendApplicationStarter.java +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/OversiktFrontendApplicationStarter.java @@ -44,9 +44,9 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { addAuthenticationHeaderFilterFrom(consumers.getTestnorgeProfilApi()) )) .route(createRoute( - "testnav-organisasjon-tilgang-service", - consumers.getTestnavPersonOrganisasjonTilgangService().getUrl(), - addAuthenticationHeaderFilterFrom(consumers.getTestnavPersonOrganisasjonTilgangService()) + "testnav-altinn3-tilgang-service", + consumers.getTestnavAltinn3TilgangService().getUrl(), + addAuthenticationHeaderFilterFrom(consumers.getTestnavAltinn3TilgangService()) )) .build(); } diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/Consumers.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/Consumers.java index 9906d9803e5..91e71c891b4 100644 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/Consumers.java +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/Consumers.java @@ -25,7 +25,7 @@ public class Consumers { private ServerProperties testnavAppTilgangAnalyseService; - private ServerProperties testnavPersonOrganisasjonTilgangService; + private ServerProperties testnavAltinn3TilgangService; private ServerProperties testnorgeProfilApi; private ServerProperties testnavBrukerService; diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/AltinnTilgangServiceConsumer.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/AltinnTilgangServiceConsumer.java new file mode 100644 index 00000000000..684da824c75 --- /dev/null +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/AltinnTilgangServiceConsumer.java @@ -0,0 +1,59 @@ +package no.nav.testnav.apps.oversiktfrontend.consumer; + +import lombok.extern.slf4j.Slf4j; +import no.nav.testnav.apps.oversiktfrontend.config.Consumers; +import no.nav.testnav.apps.oversiktfrontend.consumer.command.GetAltinnBrukertilgangTilgangCommand; +import no.nav.testnav.libs.dto.altinn3.v1.OrganisasjonDTO; +import no.nav.testnav.libs.reactivesecurity.action.GetAuthenticatedUserId; +import no.nav.testnav.libs.reactivesecurity.exchange.TokenExchange; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +@Slf4j +@Component +public class AltinnTilgangServiceConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + private final GetAuthenticatedUserId getAuthenticatedUserId; + + public AltinnTilgangServiceConsumer( + Consumers consumers, + TokenExchange tokenExchange, + WebClient.Builder webClientBuilder, + GetAuthenticatedUserId getAuthenticatedUserId) { + + serverProperties = consumers.getTestnavAltinn3TilgangService(); + this.tokenExchange = tokenExchange; + this.webClient = webClientBuilder + .baseUrl(serverProperties.getUrl()) + .build(); + this.getAuthenticatedUserId = getAuthenticatedUserId; + } + + public Flux getOrganisasjoner() { + + return getAuthenticatedUserId.call() + .flatMapMany(userId -> tokenExchange.exchange(serverProperties) + .flatMapMany(accessToken -> + new GetAltinnBrukertilgangTilgangCommand(webClient, userId, accessToken.getTokenValue()).call())); + } + + public Mono hasAccess(String organisasjonsnummer) { + + return Mono.from(getOrganisasjoner() + .filter(org -> org.getOrganisasjonsnummer().equals(organisasjonsnummer)) + .onErrorResume( + WebClientResponseException.class::isInstance, + throwable -> { + log.warn("Person har ikke tilgang til organisasjon {}.", organisasjonsnummer); + return Mono.empty(); + }) + .flatMap(value -> Mono.just(true)) + .switchIfEmpty(Mono.just(false))); + } +} diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/PersonOrganisasjonTilgangConsumer.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/PersonOrganisasjonTilgangConsumer.java deleted file mode 100644 index 05fcb8a1528..00000000000 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/PersonOrganisasjonTilgangConsumer.java +++ /dev/null @@ -1,71 +0,0 @@ -package no.nav.testnav.apps.oversiktfrontend.consumer; - -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnav.apps.oversiktfrontend.config.Consumers; -import no.nav.testnav.apps.oversiktfrontend.consumer.command.GetPersonOrganisasjonTilgangCommand; -import no.nav.testnav.apps.oversiktfrontend.consumer.command.GetPersonOrganisasjonerTilgangCommand; -import no.nav.testnav.apps.oversiktfrontend.consumer.dto.OrganisasjonDTO; -import no.nav.testnav.libs.reactivesecurity.exchange.TokenExchange; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import org.springframework.http.MediaType; -import org.springframework.http.codec.json.Jackson2JsonDecoder; -import org.springframework.http.codec.json.Jackson2JsonEncoder; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.ExchangeStrategies; -import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.client.WebClientResponseException; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -@Slf4j -@Component -public class PersonOrganisasjonTilgangConsumer { - private final WebClient webClient; - private final ServerProperties serverProperties; - private final TokenExchange tokenExchange; - - public PersonOrganisasjonTilgangConsumer( - Consumers consumers, - TokenExchange tokenExchange, - ObjectMapper objectMapper, - WebClient.Builder webClientBuilder) { - - serverProperties = consumers.getTestnavPersonOrganisasjonTilgangService(); - this.tokenExchange = tokenExchange; - ExchangeStrategies jacksonStrategy = ExchangeStrategies - .builder() - .codecs( - config -> { - config - .defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - config - .defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - }) - .build(); - this.webClient = webClientBuilder - .exchangeStrategies(jacksonStrategy) - .baseUrl(serverProperties.getUrl()) - .build(); - } - - public Flux getOrganisasjoner() { - return tokenExchange.exchange(serverProperties) - .flatMapMany(accessToken -> new GetPersonOrganisasjonerTilgangCommand(webClient, accessToken.getTokenValue()).call()); - } - - public Mono hasAccess(String organisasjonsnummer) { - return tokenExchange.exchange(serverProperties) - .flatMap(accessToken -> new GetPersonOrganisasjonTilgangCommand(webClient, accessToken.getTokenValue(), organisasjonsnummer).call()) - .onErrorResume( - WebClientResponseException.class::isInstance, - throwable -> { - log.warn("Person har ikke tilgang til organisasjon {}.", organisasjonsnummer); - return Mono.empty(); - }) - .flatMap(value -> Mono.just(true)) - .switchIfEmpty(Mono.just(false)); - } -} diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetPersonOrganisasjonerTilgangCommand.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetAltinnBrukertilgangTilgangCommand.java similarity index 64% rename from apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetPersonOrganisasjonerTilgangCommand.java rename to apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetAltinnBrukertilgangTilgangCommand.java index 2649253571b..d68f1a09485 100644 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetPersonOrganisasjonerTilgangCommand.java +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetAltinnBrukertilgangTilgangCommand.java @@ -1,7 +1,8 @@ package no.nav.testnav.apps.oversiktfrontend.consumer.command; import lombok.RequiredArgsConstructor; -import no.nav.testnav.apps.oversiktfrontend.consumer.dto.OrganisasjonDTO; +import no.nav.testnav.apps.oversiktfrontend.consumer.dto.AltinnBrukerRequest; +import no.nav.testnav.libs.dto.altinn3.v1.OrganisasjonDTO; import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; @@ -12,16 +13,18 @@ import java.util.concurrent.Callable; @RequiredArgsConstructor -public class GetPersonOrganisasjonerTilgangCommand implements Callable> { +public class GetAltinnBrukertilgangTilgangCommand implements Callable> { private final WebClient webClient; + private final String ident; private final String token; @Override - public Flux call() { + public Flux call() { return webClient - .get() - .uri("/api/v1/person/organisasjoner") + .post() + .uri("/api/v1/brukertilgang") .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .bodyValue(new AltinnBrukerRequest(ident)) .retrieve() .bodyToFlux(OrganisasjonDTO.class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetPersonOrganisasjonTilgangCommand.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetPersonOrganisasjonTilgangCommand.java deleted file mode 100644 index ab394911458..00000000000 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/command/GetPersonOrganisasjonTilgangCommand.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.nav.testnav.apps.oversiktfrontend.consumer.command; - -import lombok.RequiredArgsConstructor; -import no.nav.testnav.apps.oversiktfrontend.consumer.dto.OrganisasjonDTO; -import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; -import org.springframework.http.HttpHeaders; -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; -import reactor.util.retry.Retry; - -import java.time.Duration; -import java.util.concurrent.Callable; - -@RequiredArgsConstructor -public class GetPersonOrganisasjonTilgangCommand implements Callable> { - private final WebClient webClient; - private final String token; - private final String organisasjonsnummer; - - @Override - public Mono call() { - return webClient - .get() - .uri(builder -> builder.path("/api/v1/person/organisasjoner/{organisasjonsnummer}").build(organisasjonsnummer)) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .retrieve() - .bodyToMono(OrganisasjonDTO.class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)); - } -} diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/dto/AltinnBrukerRequest.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/dto/AltinnBrukerRequest.java new file mode 100644 index 00000000000..9d1422591c4 --- /dev/null +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/dto/AltinnBrukerRequest.java @@ -0,0 +1,11 @@ +package no.nav.testnav.apps.oversiktfrontend.consumer.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class AltinnBrukerRequest { + + private String ident; +} diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/dto/OrganisasjonDTO.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/dto/OrganisasjonDTO.java deleted file mode 100644 index 5981ab1ebae..00000000000 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/consumer/dto/OrganisasjonDTO.java +++ /dev/null @@ -1,11 +0,0 @@ -package no.nav.testnav.apps.oversiktfrontend.consumer.dto; - -import java.time.LocalDateTime; - -public record OrganisasjonDTO( - String navn, - String orgnisasjonsnummer, - String orgnisasjonsfrom, - LocalDateTime gyldigTil -) { -} diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/service/AccessService.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/service/AccessService.java index c398412334c..f9d56fc8e2e 100644 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/service/AccessService.java +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/service/AccessService.java @@ -1,16 +1,16 @@ package no.nav.testnav.apps.oversiktfrontend.service; import lombok.RequiredArgsConstructor; -import no.nav.testnav.apps.oversiktfrontend.consumer.PersonOrganisasjonTilgangConsumer; +import no.nav.testnav.apps.oversiktfrontend.consumer.AltinnTilgangServiceConsumer; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; @Service @RequiredArgsConstructor public class AccessService { - private final PersonOrganisasjonTilgangConsumer personOrganisasjonTilgangConsumer; + private final AltinnTilgangServiceConsumer altinnTilgangServiceConsumer; public Mono hasAccess(String organisasjonsnummer) { - return personOrganisasjonTilgangConsumer.hasAccess(organisasjonsnummer); + return altinnTilgangServiceConsumer.hasAccess(organisasjonsnummer); } } diff --git a/apps/oversikt-frontend/src/main/resources/application-local.yml b/apps/oversikt-frontend/src/main/resources/application-local.yml index f186349ca25..42d104adaa8 100644 --- a/apps/oversikt-frontend/src/main/resources/application-local.yml +++ b/apps/oversikt-frontend/src/main/resources/application-local.yml @@ -14,7 +14,7 @@ consumers: url: https://testnorge-profil-api-dev.intern.dev.nav.no/api testnav-app-tilgang-analyse-service: url: https://testnav-app-tilgang-analyse-service.intern.dev.nav.no - testnav-person-organisasjon-tilgang-service: - url: https://testnav-person-organisasjon-tilgang-service-dev.intern.dev.nav.no + testnav-altinn3-tilgang-service: + url: https://testnav-altinn3-tilgang-service.intern.dev.nav.no testnav-bruker-service: url: https://testnav-bruker-service-dev.intern.dev.nav.no \ No newline at end of file diff --git a/apps/oversikt-frontend/src/main/resources/application.yml b/apps/oversikt-frontend/src/main/resources/application.yml index cab26a3240a..903ef43b964 100644 --- a/apps/oversikt-frontend/src/main/resources/application.yml +++ b/apps/oversikt-frontend/src/main/resources/application.yml @@ -23,11 +23,11 @@ consumers: namespace: dolly name: testnav-app-tilgang-analyse-service url: http://testnav-app-tilgang-analyse-service.dolly.svc.cluster.local - testnav-person-organisasjon-tilgang-service: + testnav-altinn3-tilgang-service: cluster: dev-gcp namespace: dolly - name: testnav-person-organisasjon-tilgang-service-dev - url: http://testnav-person-organisasjon-tilgang-service-dev.dolly.svc.cluster.local + name: testnav-altinn3-tilgang-service + url: http://testnav-altinn3-tilgang-service.dolly.svc.cluster.local testnav-bruker-service: cluster: dev-gcp namespace: dolly