Skip to content

Commit 96f54aa

Browse files
committed
Merge remote-tracking branch 'origin/post_spring_school_cleanup' into
develop_2
2 parents 149774d + ec62a48 commit 96f54aa

File tree

8 files changed

+93
-68
lines changed

8 files changed

+93
-68
lines changed

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ public class ApiServiceConfig
9393
@Autowired
9494
private BpeOidcClientProvider bpeOidcClientProvider;
9595

96-
9796
@Bean
9897
public ProcessPluginApi processPluginApiV2()
9998
{

dsf-bpe/dsf-bpe-process-api-v2/src/main/java/dev/dsf/bpe/v2/constants/CodeSystems.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,4 +500,52 @@ public static final boolean isDsfAdmin(Coding coding)
500500
return isSame(SYSTEM, Codes.DSF_ADMIN, coding);
501501
}
502502
}
503+
504+
public static final class ReadAccessTag
505+
{
506+
private ReadAccessTag()
507+
{
508+
}
509+
510+
public static final String SYSTEM = "http://dsf.dev/fhir/CodeSystem/read-access-tag";
511+
512+
public static Coding withCode(String code)
513+
{
514+
return new Coding().setSystem(SYSTEM).setCode(code);
515+
}
516+
517+
public static final class Codes
518+
{
519+
private Codes()
520+
{
521+
}
522+
523+
public static final String LOCAL = "LOCAL";
524+
public static final String ORGANIZATION = "ORGANIZATION";
525+
public static final String ROLE = "ROLE";
526+
public static final String ALL = "ALL";
527+
}
528+
529+
public static final Coding local()
530+
{
531+
return new Coding(SYSTEM, Codes.LOCAL, "Read access for local users");
532+
}
533+
534+
public static final Coding organization()
535+
{
536+
return new Coding(SYSTEM, Codes.ORGANIZATION,
537+
"Read access for organization specified via extension http://dsf.dev/fhir/StructureDefinition/extension-read-access-organization");
538+
}
539+
540+
public static final Coding role()
541+
{
542+
return new Coding(SYSTEM, Codes.ROLE,
543+
"Read access for member organizations with role in consortium (parent organization) specified via extension http://dsf.dev/fhir/StructureDefinition/extension-read-access-consortium-role");
544+
}
545+
546+
public static final Coding all()
547+
{
548+
return new Coding(SYSTEM, Codes.ALL, "Read access for remote and local users");
549+
}
550+
}
503551
}

dsf-bpe/dsf-bpe-process-api-v2/src/main/java/dev/dsf/bpe/v2/spring/ActivityPrototypeBeanCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
/**
1919
* Helper class to register {@link Activity}s as prototype beans. Must be configured as a <code>static</code>
20-
* {@link Bean} inside a {@link Configuration} classes.
20+
* {@link Bean} inside a {@link Configuration} class.
2121
* <p>
2222
* Usage:
2323
* <p>

dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v1/allowed-bpe-classes.list

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,18 @@ org.camunda.bpm.engine.ProcessEngine
1818
org.camunda.bpm.engine.RuntimeService
1919
org.camunda.bpm.engine.variable
2020
org.camunda.bpm.model.bpmn.instance
21+
org.joda.time
2122
org.glassfish.jersey
2223
org.slf4j.Logger
2324
org.slf4j.LoggerFactory
2425
org.springframework.beans
2526
org.springframework.cglib
2627
org.springframework.context
28+
org.springframework.core
2729
org.springframework.lang
2830
org.springframework.util
2931
org.springframework.web.util.UriComponents
3032
org.springframework.web.util.UriComponentsBuilder
3133
org.w3c.dom
32-
org.xml.sax
34+
org.xml.sax
35+
sun.misc.Unsafe

dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v2/allowed-bpe-classes.list

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ org.slf4j.LoggerFactory
2828
org.springframework.beans
2929
org.springframework.cglib
3030
org.springframework.context
31+
org.springframework.core
3132
org.springframework.lang
3233
org.springframework.util
3334
org.w3c.dom
Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,14 @@
11
package dev.dsf.bpe.test.json;
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
4-
import com.fasterxml.jackson.annotation.JsonGetter;
54
import com.fasterxml.jackson.annotation.JsonProperty;
65

7-
public class JsonPojo
6+
public record JsonPojo(@JsonProperty("value-1") String value1, @JsonProperty("value-2") String value2)
87
{
9-
@JsonProperty("value-1")
10-
private final String value1;
11-
12-
@JsonProperty("value-2")
13-
private final String value2;
14-
158
@JsonCreator
169
public JsonPojo(@JsonProperty("value-1") String value1, @JsonProperty("value-2") String value2)
1710
{
1811
this.value1 = value1;
1912
this.value2 = value2;
2013
}
21-
22-
@JsonGetter
23-
public String getValue1()
24-
{
25-
return value1;
26-
}
27-
28-
@JsonGetter
29-
public String getValue2()
30-
{
31-
return value2;
32-
}
33-
3414
}

dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/JsonVariableTestGet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ public void getJsonVariable(Variables variables) throws Exception
2525
JsonPojo variable = variables.getVariable(JsonVariableTestSet.JSON_VARIABLE);
2626

2727
expectNotNull(variable);
28-
expectSame(JsonVariableTestSet.TEST_VALUE_1, variable.getValue1());
29-
expectSame(JsonVariableTestSet.TEST_VALUE_2, variable.getValue2());
28+
expectSame(JsonVariableTestSet.TEST_VALUE_1, variable.value1());
29+
expectSame(JsonVariableTestSet.TEST_VALUE_2, variable.value2());
3030
}
3131

3232
@PluginTest

dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/auth/BackChannelLogoutAuthenticator.java

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.util.Objects;
55
import java.util.concurrent.ConcurrentHashMap;
66
import java.util.concurrent.ConcurrentMap;
7-
import java.util.concurrent.ExecutionException;
87

98
import org.eclipse.jetty.http.HttpHeader;
109
import org.eclipse.jetty.http.HttpMethod;
@@ -91,60 +90,55 @@ private boolean isContentTypeFormEncoded(Request request)
9190
public AuthenticationState validateRequest(Request request, Response response, Callback callback)
9291
throws ServerAuthException
9392
{
94-
try
93+
94+
Fields formFields = FormFields.getFields(request);
95+
Field logoutTokenField = formFields.get("logout_token");
96+
97+
if (logoutTokenField == null || logoutTokenField.getValues().size() != 1)
9598
{
96-
Fields formFields = FormFields.from(request).get();
97-
Field logoutTokenField = formFields.get("logout_token");
99+
Response.writeError(request, response, callback, HttpStatus.FORBIDDEN_403);
100+
return AuthenticationState.SEND_FAILURE;
101+
}
98102

99-
if (logoutTokenField == null || logoutTokenField.getValues().size() != 1)
103+
Algorithm algorithm = Algorithm.RSA256(openIdConfiguration.getRsaKeyProvider());
104+
JWTVerifier verifier = JWT.require(algorithm).withIssuer(openIdConfiguration.getIssuer())
105+
.withAudience(openIdConfiguration.getClientId()).acceptLeeway(1)
106+
.withClaim("events",
107+
(claim, jwt) -> claim.asMap().containsKey("http://schemas.openid.net/event/backchannel-logout"))
108+
.build();
109+
110+
try
111+
{
112+
DecodedJWT jwt = verifier.verify(logoutTokenField.getValue());
113+
if (!jwt.getClaims().containsKey("sub") && !jwt.getClaims().containsKey("sid"))
100114
{
101-
Response.writeError(request, response, callback, HttpStatus.FORBIDDEN_403);
115+
logger.warn("Logout Token has no sub and no sid claim");
116+
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
102117
return AuthenticationState.SEND_FAILURE;
103118
}
104119

105-
Algorithm algorithm = Algorithm.RSA256(openIdConfiguration.getRsaKeyProvider());
106-
JWTVerifier verifier = JWT.require(algorithm).withIssuer(openIdConfiguration.getIssuer())
107-
.withAudience(openIdConfiguration.getClientId()).acceptLeeway(1).withClaim("events", (claim,
108-
jwt) -> claim.asMap().containsKey("http://schemas.openid.net/event/backchannel-logout"))
109-
.build();
120+
logger.debug("logout token claims: {}", jwt.getClaims());
110121

111-
try
112-
{
113-
DecodedJWT jwt = verifier.verify(logoutTokenField.getValue());
114-
if (!jwt.getClaims().containsKey("sub") && !jwt.getClaims().containsKey("sid"))
115-
{
116-
logger.warn("Logout Token has no sub and no sid claim");
117-
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
118-
return AuthenticationState.SEND_FAILURE;
119-
}
120-
121-
logger.debug("logout token claims: {}", jwt.getClaims());
122+
String sub = jwt.getClaim("sub").asString();
123+
String sid = jwt.getClaim("sid").asString();
122124

123-
String sub = jwt.getClaim("sub").asString();
124-
String sid = jwt.getClaim("sid").asString();
125+
logger.debug("Invalidating session for sub/sid {}/{}", sub, sid);
125126

126-
logger.debug("Invalidating session for sub/sid {}/{}", sub, sid);
127+
HttpSession sessionBySub = sessionsBySub.get(sub);
128+
if (sessionBySub != null)
129+
sessionBySub.invalidate();
127130

128-
HttpSession sessionBySub = sessionsBySub.get(sub);
129-
if (sessionBySub != null)
130-
sessionBySub.invalidate();
131+
// session will have been removed if found by sub and invalidated
132+
HttpSession sessionBySid = sessionsBySid.get(sid);
133+
if (sessionBySid != null)
134+
sessionBySid.invalidate();
131135

132-
// session will have been removed if found by sub and invalidated
133-
HttpSession sessionBySid = sessionsBySid.get(sid);
134-
if (sessionBySid != null)
135-
sessionBySid.invalidate();
136-
137-
return AuthenticationState.SEND_SUCCESS;
138-
}
139-
catch (JWTVerificationException e)
140-
{
141-
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
142-
return AuthenticationState.SEND_FAILURE;
143-
}
136+
return AuthenticationState.SEND_SUCCESS;
144137
}
145-
catch (InterruptedException | ExecutionException e)
138+
catch (JWTVerificationException e)
146139
{
147-
throw new ServerAuthException(e);
140+
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
141+
return AuthenticationState.SEND_FAILURE;
148142
}
149143
}
150144

0 commit comments

Comments
 (0)