Skip to content

Commit

Permalink
Gjør lokal tilgangsbeslutning PepImpl uavhengig av cluster (#1280)
Browse files Browse the repository at this point in the history
* Gjør lokal tilgangsbeslutning PepImpl uavhengig av cluster

* Legger til en test for avslag ved kall fra dev til prod eller motsatt

* Fjerner try-catch og introdusere residentCluster og residentNamespace
  • Loading branch information
espenwaaga committed Apr 26, 2023
1 parent 2dbfd41 commit 5a8b07f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import javax.enterprise.inject.Default;
import javax.inject.Inject;

import no.nav.foreldrepenger.konfig.Cluster;
import no.nav.foreldrepenger.konfig.Environment;
import no.nav.foreldrepenger.konfig.KonfigVerdi;
import no.nav.vedtak.sikkerhet.abac.beskyttet.AvailabilityType;
Expand All @@ -31,7 +32,8 @@ public class PepImpl implements Pep {
private Set<String> pipUsers;
private TokenProvider tokenProvider;
private String preAuthorized;
private String residentClusterNamespace;
private Cluster residentCluster;
private String residentNamespace;

public PepImpl() {
}
Expand All @@ -46,7 +48,8 @@ public PepImpl(PdpKlient pdpKlient,
this.tokenProvider = tokenProvider;
this.pipUsers = konfigurePipUsers(pipUsers);
this.preAuthorized = ENV.getProperty(AzureProperty.AZURE_APP_PRE_AUTHORIZED_APPS.name()); // eg json array av objekt("name", "clientId")
this.residentClusterNamespace = ENV.clusterName() + ":" + ENV.namespace();
this.residentCluster = ENV.getCluster();
this.residentNamespace = ENV.namespace();
}

protected Set<String> konfigurePipUsers(String pipUsers) {
Expand Down Expand Up @@ -84,12 +87,24 @@ private boolean harTilgang(BeskyttetRessursAttributter attributter) {
if (consumer == null || !preAuthorized.contains(consumer)) {
return false;
}
if (consumer.startsWith(residentClusterNamespace) || builder.internAzureConsumer(consumer)) {

if (erISammeKlusterKlasseOgNamespace(consumer) || builder.internAzureConsumer(consumer)) {
return true;
}
return AvailabilityType.ALL.equals(attributter.getAvailabilityType());
}

private boolean erISammeKlusterKlasseOgNamespace(String consumer) {
var elementer = consumer.split(":");
if (elementer.length < 2) {
return false;
}

var consumerCluster = elementer[0];
var consumerNamespace = elementer[1];
return residentCluster.isSameClass(Cluster.of(consumerCluster)) && residentNamespace.equals(consumerNamespace);
}

protected Tilgangsbeslutning vurderTilgangTilPipTjeneste(BeskyttetRessursAttributter beskyttetRessursAttributter, AppRessursData appRessursData) {
String uid = tokenProvider.getUid();
if (pipUsers.contains(uid.toLowerCase())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class PepImplTest {

@BeforeAll
static void initEnv() {
System.setProperty(AzureProperty.AZURE_APP_PRE_AUTHORIZED_APPS.name(), LOCAL_APP + ", local:annetnamespace:eksternapplication");
System.setProperty(AzureProperty.AZURE_APP_PRE_AUTHORIZED_APPS.name(), LOCAL_APP + ", vtp:annetnamespace:eksternapplication");
}

@AfterAll
Expand Down Expand Up @@ -99,8 +99,8 @@ void skal_gi_tilgang_for_intern_azure_cc() {
@Test
void skal_gi_avslag_for_ekstern_azure_cc() {
var token = new OpenIDToken(OpenIDProvider.AZUREAD, new TokenString("token"));
when(tokenProvider.getUid()).thenReturn("local:annetnamespace:ukjentapplication");
var attributter = lagBeskyttetRessursAttributterAzure(AvailabilityType.INTERNAL, token, "local:annetnamespace:ukjentapplication",
when(tokenProvider.getUid()).thenReturn("vtp:annetnamespace:ukjentapplication");
var attributter = lagBeskyttetRessursAttributterAzure(AvailabilityType.INTERNAL, token, "vtp:annetnamespace:ukjentapplication",
IdentType.Systemressurs);

when(pdpRequestBuilder.lagAppRessursData(any())).thenReturn(AppRessursData.builder().build());
Expand All @@ -110,11 +110,26 @@ void skal_gi_avslag_for_ekstern_azure_cc() {
verifyNoInteractions(pdpKlientMock);
}

@Test
void skal_gi_avslag_for_godkjent_ekstern_azure_cc_men_i_feil_klusterklasse() {
var token = new OpenIDToken(OpenIDProvider.AZUREAD, new TokenString("token"));
when(tokenProvider.getUid()).thenReturn("dev-fss:annetnamespace:eksternapplication");
var attributter = lagBeskyttetRessursAttributterAzure(AvailabilityType.INTERNAL, token, "vtp:annetnamespace:eksternapplication",
IdentType.Systemressurs);

when(pdpRequestBuilder.lagAppRessursData(any())).thenReturn(AppRessursData.builder().build());

Tilgangsbeslutning permit = pep.vurderTilgang(attributter);
assertThat(permit.fikkTilgang()).isFalse();
verifyNoInteractions(pdpKlientMock);
}


@Test
void skal_gi_tilgang_for_godkjent_ekstern_azure_cc() {
var token = new OpenIDToken(OpenIDProvider.AZUREAD, new TokenString("token"));
when(tokenProvider.getUid()).thenReturn("local:annetnamespace:eksternapplication");
var attributter = lagBeskyttetRessursAttributterAzure(AvailabilityType.ALL, token, "local:annetnamespace:eksternapplication",
when(tokenProvider.getUid()).thenReturn("vtp:annetnamespace:eksternapplication");
var attributter = lagBeskyttetRessursAttributterAzure(AvailabilityType.ALL, token, "vtp:annetnamespace:eksternapplication",
IdentType.Systemressurs);

when(pdpRequestBuilder.lagAppRessursData(any())).thenReturn(AppRessursData.builder().build());
Expand Down

0 comments on commit 5a8b07f

Please sign in to comment.