Skip to content

Commit 689a56c

Browse files
committed
1 parent 5b786d7 commit 689a56c

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

oidc/src/main/java/oidc/eduid/AttributePseudonymisation.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
import org.springframework.web.util.UriComponentsBuilder;
1313

1414
import java.net.URI;
15-
import java.util.Collections;
16-
import java.util.HashMap;
17-
import java.util.Map;
18-
import java.util.Optional;
15+
import java.util.*;
1916

2017
@Service
2118
public class AttributePseudonymisation {
@@ -54,13 +51,23 @@ public AttributePseudonymisation(@Value("${eduid.uri}") URI eduIdUri,
5451
*/
5552
public Optional<Map<String, String>> pseudonymise(OpenIDClient resourceServer, OpenIDClient openIDClient, String eduId) {
5653
boolean resourceServerEquals = resourceServer.getClientId().equals(openIDClient.getClientId());
54+
String resourceServerInstitutionGuid = resourceServer.getInstitutionGuid();
55+
String clientInstitutionGuid = openIDClient.getInstitutionGuid();
56+
boolean institutionGuidEquals = StringUtils.hasText(resourceServerInstitutionGuid) &&
57+
Objects.equals(resourceServerInstitutionGuid, clientInstitutionGuid);
5758

5859
LOG.debug(String.format("Starting to pseudonymise for RS %s and openIDclient %s. " +
59-
"Enabled is %s, eduId is %s, resourceServerEquals is %s",
60-
resourceServer.getClientId(), openIDClient.getClientId(), enabled, eduId, resourceServerEquals));
60+
"Enabled is %s, eduId is %s, resourceServerEquals is %s, institutionGuidEquals is %s",
61+
resourceServer.getClientId(),
62+
openIDClient.getClientId(),
63+
enabled,
64+
eduId,
65+
resourceServerEquals,
66+
institutionGuidEquals
67+
));
6168

62-
if (!enabled || !StringUtils.hasText(eduId) || resourceServerEquals) {
63-
LOG.debug("Returning empty result for 'pseudonymise'");
69+
if (!enabled || !StringUtils.hasText(eduId) || resourceServerEquals || institutionGuidEquals) {
70+
LOG.debug("Skipping attribute manipulation and returning empty result for 'pseudonymise'");
6471
return Optional.empty();
6572
}
6673
Map<String, String> result = new HashMap<>();
@@ -69,7 +76,7 @@ public Optional<Map<String, String>> pseudonymise(OpenIDClient resourceServer, O
6976
String uriString = UriComponentsBuilder.fromUri(eduIdUri)
7077
.queryParam("eduid", eduId)
7178
.queryParam("sp_entity_id", resourceServer.getClientId())
72-
.queryParam("sp_institution_guid", resourceServer.getInstitutionGuid())
79+
.queryParam("sp_institution_guid", resourceServerInstitutionGuid)
7380
.toUriString();
7481
ResponseEntity<Map<String, String>> responseEntity =
7582
restTemplate.exchange(uriString, HttpMethod.GET, requestEntity, new ParameterizedTypeReference<>() {

oidc/src/test/java/oidc/eduid/AttributePseudonymisationTest.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@
22

33
import com.github.tomakehurst.wiremock.junit.WireMockRule;
44
import oidc.AbstractIntegrationTest;
5+
import oidc.model.EntityType;
56
import oidc.model.OpenIDClient;
67
import org.junit.ClassRule;
78
import org.junit.Test;
89
import org.springframework.beans.factory.annotation.Autowired;
910

1011
import java.io.IOException;
11-
import java.util.Collections;
12-
import java.util.HashMap;
13-
import java.util.Map;
14-
import java.util.Optional;
12+
import java.util.*;
1513

1614
import static com.github.tomakehurst.wiremock.client.WireMock.*;
1715
import static org.junit.Assert.assertEquals;
@@ -47,7 +45,7 @@ public void pseudonymise() throws IOException {
4745
}
4846

4947
@Test
50-
public void pseudonymiseWithRSwithoutInstitutionIdentifier() throws IOException {
48+
public void pseudonymiseWithRSWithoutInstitutionIdentifier() throws IOException {
5149
Map<String, String> res = new HashMap<>();
5250
String pseudoEduid = "rp-eduid";
5351
res.put("eduid", pseudoEduid);
@@ -70,6 +68,19 @@ public void pseudonymiseRpIsRs() throws IOException {
7068
assertFalse(pseudonymisedAttributes.isPresent());
7169
}
7270

71+
@Test
72+
public void pseudonymiseRpIsRsForInstitutionGUID() {
73+
String institutionGuid = UUID.randomUUID().toString();
74+
OpenIDClient resourceServer = new OpenIDClient(Map.of(
75+
"type", EntityType.OAUTH_RS.getType(),
76+
"data", Map.of("entityid","rs", "metaDataFields", Map.of("coin:institution_guid", institutionGuid))));
77+
OpenIDClient openIDClient = new OpenIDClient(Map.of(
78+
"type", EntityType.OIDC_RP.getType(),
79+
"data", Map.of("entityid","rp", "metaDataFields", Map.of("coin:institution_guid", institutionGuid))));
80+
Optional<Map<String, String>> pseudonymisedAttributes = attributePseudonymisation.pseudonymise(resourceServer, openIDClient, "rs-eduid");
81+
82+
assertFalse(pseudonymisedAttributes.isPresent());
83+
}
7384

7485
@Test
7586
public void pseudonymiseNoEduid() throws IOException {
@@ -94,4 +105,4 @@ public void pseudonymiseWithError() throws IOException {
94105
assertFalse(pseudonymisedAttributes.isPresent());
95106
}
96107

97-
}
108+
}

0 commit comments

Comments
 (0)