Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects

Feature/fix headers filter

Merged Jean Claude Correale requested to merge feature/fix-headers-filter into develop
@@ -40,23 +40,33 @@ public class HeadersFilter implements GlobalFilter, Ordered {
log.info("Headers Filter...");
var credentialId = ExchangeUtil.getCredentialIdFromExchange(serverWebExchange);
return Mono.just(serverWebExchange).flatMap(exchange -> {
var jwt = getTierOneToken(exchange);
var epAttributes = getIdentityAttributeCodes(getEphemeralProofAttributes(exchange));
var endUserAttributes = jwt
.map(token -> {
validateSession(serverWebExchange, token, credentialId);
return token;
})
.map(this::getIdentityAttributeCodes)
.orElse(List.of())
.stream();
var attributes = Stream.concat(epAttributes, endUserAttributes).toList();
exchange = addAbacAttributeToRequest(exchange, attributes);
exchange = addHeadersToRequest(exchange, credentialId);
var jwt = getValidJwtOrThrow(serverWebExchange, exchange, credentialId);
var attributes = getIdentityAttributes(exchange, jwt);
exchange = decorateRequest(exchange, attributes, credentialId);
return chain.filter(exchange);
});
}
private ServerWebExchange decorateRequest(
ServerWebExchange exchange, List<String> attributes, String credentialId) {
exchange = addAbacAttributeToRequest(exchange, attributes);
exchange = addHeadersToRequest(exchange, credentialId);
return exchange;
}
private List<String> getIdentityAttributes(ServerWebExchange exchange, Optional<SignedJWT> jwt) {
var epAttributes = getIdentityAttributeCodes(getEphemeralProofAttributes(exchange));
var endUserAttributes = jwt.map(this::getIdentityAttributeCodes).orElse(List.of()).stream();
return Stream.concat(epAttributes, endUserAttributes).toList();
}
private Optional<SignedJWT> getValidJwtOrThrow(
ServerWebExchange serverWebExchange, ServerWebExchange exchange, String credentialId) {
var jwt = getTierOneToken(exchange);
jwt.ifPresent(signedJWT -> validateSession(serverWebExchange, signedJWT, credentialId));
return jwt;
}
private ServerWebExchange addAbacAttributeToRequest(ServerWebExchange exchange, List<String> attributes) {
if (!attributes.isEmpty()) {
return exchange.mutate()
Loading