Skip to content

Commit 04ba46f

Browse files
author
Ola Løvholm
authoredMar 31, 2020
Utvider BeskyttetRessurs med mulighet til å angi ressurser som streng for å kunne benytte verdier utover de angitt i BeskyttetRessursResourceAttributt. Deprecated BeskyttetRessursResourceAttributt. (#257)
1 parent 5c590d0 commit 04ba46f

File tree

6 files changed

+30
-16
lines changed

6 files changed

+30
-16
lines changed
 

‎felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/AbacAttributtSamling.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class AbacAttributtSamling {
77
private final AbacIdToken idToken;
88
private final AbacDataAttributter dataAttributter = AbacDataAttributter.opprett();
99
private BeskyttetRessursActionAttributt actionType;
10-
private BeskyttetRessursResourceAttributt resource;
10+
private String resource;
1111
private String action;
1212

1313
private AbacAttributtSamling(AbacIdToken idToken) {
@@ -60,12 +60,12 @@ public BeskyttetRessursActionAttributt getActionType() {
6060
return actionType;
6161
}
6262

63-
public AbacAttributtSamling setResource(BeskyttetRessursResourceAttributt resource) {
63+
public AbacAttributtSamling setResource(String resource) {
6464
this.resource = resource;
6565
return this;
6666
}
6767

68-
public BeskyttetRessursResourceAttributt getResource() {
68+
public String getResource() {
6969
return resource;
7070
}
7171

‎felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessurs.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
public @interface BeskyttetRessurs {
1818
@Nonbinding BeskyttetRessursActionAttributt action();
1919

20-
@Nonbinding BeskyttetRessursResourceAttributt ressurs();
20+
@Nonbinding @Deprecated BeskyttetRessursResourceAttributt ressurs() default BeskyttetRessursResourceAttributt.DUMMY;
21+
22+
@Nonbinding String resource() default "";
2123

2224
/**
2325
* Sett til false for å unngå at det logges til sporingslogg ved tilgang. Det skal bare gjøres for tilfeller som ikke håndterer personopplysninger.

‎felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptor.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.lang.reflect.Parameter;
66
import java.util.Collection;
77
import java.util.List;
8+
import java.util.Optional;
89

910
import javax.annotation.Priority;
1011
import javax.enterprise.context.Dependent;
@@ -21,7 +22,7 @@
2122
import no.nav.vedtak.sikkerhet.context.SubjectHandler;
2223
import no.nav.vedtak.sikkerhet.loginmodule.SamlUtils;
2324

24-
@BeskyttetRessurs(action = BeskyttetRessursActionAttributt.DUMMY, ressurs = BeskyttetRessursResourceAttributt.DUMMY)
25+
@BeskyttetRessurs(action = BeskyttetRessursActionAttributt.DUMMY, ressurs = BeskyttetRessursResourceAttributt.DUMMY, resource = "")
2526
@Interceptor
2627
@Priority(Interceptor.Priority.APPLICATION + 11)
2728
@Dependent
@@ -89,9 +90,16 @@ private AbacAttributtSamling hentAttributter(InvocationContext invocationContext
8990
: AbacAttributtSamling.medJwtToken(hentOidcTOken());
9091
BeskyttetRessurs beskyttetRessurs = method.getAnnotation(BeskyttetRessurs.class);
9192
attributter.setActionType(beskyttetRessurs.action());
92-
attributter.setResource(beskyttetRessurs.ressurs());
93-
attributter.setAction(utledAction(clazz, method));
9493

94+
if (beskyttetRessurs.resource().isEmpty() && beskyttetRessurs.ressurs() == BeskyttetRessursResourceAttributt.DUMMY) {
95+
throw new IllegalArgumentException("Beskyttet ressurs må være satt");
96+
}
97+
if(beskyttetRessurs.ressurs() != BeskyttetRessursResourceAttributt.DUMMY)
98+
attributter.setResource(beskyttetRessurs.ressurs().getEksternKode());
99+
if(!beskyttetRessurs.resource().isEmpty())
100+
attributter.setResource(beskyttetRessurs.resource());
101+
102+
attributter.setAction(utledAction(clazz, method));
95103
Parameter[] parameterDecl = method.getParameters();
96104
for (int i = 0; i < method.getParameterCount(); i++) {
97105
Object parameterValue = invocationContext.getParameters()[i];

‎felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/PepImpl.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
@Default
1717
@ApplicationScoped
1818
public class PepImpl implements Pep {
19+
private final static String PIP = "pip.tjeneste.kan.kun.kalles.av.pdp.servicebruker";
20+
1921

2022
private PdpKlient pdpKlient;
2123
private PdpRequestBuilder pdpRequestBuilder;
@@ -50,7 +52,7 @@ protected Set<String> konfigurePipUsers(String pipUsers) {
5052
public Tilgangsbeslutning vurderTilgang(AbacAttributtSamling attributter) {
5153
PdpRequest pdpRequest = pdpRequestBuilder.lagPdpRequest(attributter);
5254

53-
if (BeskyttetRessursResourceAttributt.PIP.equals(attributter.getResource())) {
55+
if (PIP.equals(attributter.getResource())) {
5456
return vurderTilgangTilPipTjeneste(pdpRequest, attributter);
5557
} else {
5658
return pdpKlient.forespørTilgang(pdpRequest);

‎felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptorTest.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class BeskyttetRessursInterceptorTest {
3434
PdpRequest pdpRequest = new PdpRequest();
3535
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_PERSON_AKTOERID_RESOURCE, Collections.singleton(aktør1.getAktørId()));
3636
pdpRequest.put(NavAbacCommonAttributter.XACML10_ACTION_ACTION_ID, attributter.getActionType().getEksternKode());
37-
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource().getEksternKode());
37+
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource());
3838
pdpRequest.put(PdpKlient.ENVIRONMENT_AUTH_TOKEN, attributter.getIdToken());
3939
return new Tilgangsbeslutning(
4040
AbacResultat.GODKJENT,
@@ -55,7 +55,7 @@ public class BeskyttetRessursInterceptorTest {
5555
PdpRequest pdpRequest = new PdpRequest();
5656
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_PERSON_AKTOERID_RESOURCE, (Collections.singleton(aktør1.getAktørId())));
5757
pdpRequest.put(NavAbacCommonAttributter.XACML10_ACTION_ACTION_ID, attributter.getActionType().getEksternKode());
58-
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource().getEksternKode());
58+
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource());
5959
pdpRequest.put(PdpKlient.ENVIRONMENT_AUTH_TOKEN, attributter.getIdToken());
6060
return new Tilgangsbeslutning(
6161
AbacResultat.GODKJENT,
@@ -77,7 +77,7 @@ public class BeskyttetRessursInterceptorTest {
7777
PdpRequest pdpRequest = new PdpRequest();
7878
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_PERSON_FNR, (Collections.singleton(aktør1.getAktørId())));
7979
pdpRequest.put(NavAbacCommonAttributter.XACML10_ACTION_ACTION_ID, attributter.getActionType().getEksternKode());
80-
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource().getEksternKode());
80+
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource());
8181
pdpRequest.put(PdpKlient.ENVIRONMENT_AUTH_TOKEN, attributter.getIdToken());
8282
return new Tilgangsbeslutning(
8383
AbacResultat.GODKJENT,
@@ -98,7 +98,7 @@ public class BeskyttetRessursInterceptorTest {
9898
PdpRequest pdpRequest = new PdpRequest();
9999
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_PERSON_FNR, (Collections.singleton(aktør1.getAktørId())));
100100
pdpRequest.put(NavAbacCommonAttributter.XACML10_ACTION_ACTION_ID, attributter.getActionType().getEksternKode());
101-
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource().getEksternKode());
101+
pdpRequest.put(NavAbacCommonAttributter.RESOURCE_FELLES_RESOURCE_TYPE, attributter.getResource());
102102
pdpRequest.put(PdpKlient.ENVIRONMENT_AUTH_TOKEN, attributter.getIdToken());
103103
return new Tilgangsbeslutning(
104104
AbacResultat.AVSLÅTT_KODE_6,
@@ -119,10 +119,11 @@ public class BeskyttetRessursInterceptorTest {
119119
"action=/foo/aktoer_in abac_action=create abac_resource_type=pip.tjeneste.kan.kun.kalles.av.pdp.servicebruker aktorId=00000000000 decision=Deny");
120120
}
121121

122+
122123
@Path("foo")
123124
public static class RestClass {
124125

125-
@BeskyttetRessurs(action = BeskyttetRessursActionAttributt.CREATE, ressurs = BeskyttetRessursResourceAttributt.PIP)
126+
@BeskyttetRessurs(action = BeskyttetRessursActionAttributt.CREATE, resource = "pip.tjeneste.kan.kun.kalles.av.pdp.servicebruker")
126127
@Path("aktoer_in")
127128
public void aktoerIn(@SuppressWarnings("unused") AktørDto param) {
128129

‎felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/PepImplTest.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
public class PepImplTest {
1717

18+
1819
private PepImpl pep;
1920
private PdpKlient pdpKlientMock;
2021

@@ -34,7 +35,7 @@ public void clearSubjectHandler() {
3435
public void skal_gi_tilgang_til_srvpdp_for_piptjeneste() {
3536
SubjectHandlerUtils.setInternBruker("srvpdp");
3637
AbacAttributtSamling attributter = AbacAttributtSamling.medJwtToken("dummy")
37-
.setResource(BeskyttetRessursResourceAttributt.PIP)
38+
.setResource(BeskyttetRessursResourceAttributt.PIP.getEksternKode())
3839
.setAction("READ");
3940

4041
Tilgangsbeslutning permit = pep.vurderTilgang(attributter);
@@ -46,7 +47,7 @@ public void skal_gi_tilgang_til_srvpdp_for_piptjeneste() {
4647
public void skal_nekte_tilgang_til_saksbehandler_for_piptjeneste() {
4748
SubjectHandlerUtils.setInternBruker("z142443");
4849
AbacAttributtSamling attributter = AbacAttributtSamling.medJwtToken("dummy")
49-
.setResource(BeskyttetRessursResourceAttributt.PIP)
50+
.setResource(BeskyttetRessursResourceAttributt.PIP.getEksternKode())
5051
.setAction("READ");
5152

5253
Tilgangsbeslutning permit = pep.vurderTilgang(attributter);
@@ -58,7 +59,7 @@ public void skal_nekte_tilgang_til_saksbehandler_for_piptjeneste() {
5859
public void skal_kalle_pdp_for_annet_enn_pip_tjenester(){
5960
SubjectHandlerUtils.setInternBruker("z142443");
6061
AbacAttributtSamling attributter = AbacAttributtSamling.medJwtToken("dummy")
61-
.setResource(BeskyttetRessursResourceAttributt.FAGSAK)
62+
.setResource(BeskyttetRessursResourceAttributt.FAGSAK.getEksternKode())
6263
.setAction("READ");
6364

6465
@SuppressWarnings("unused")

0 commit comments

Comments
 (0)
Please sign in to comment.