Ich erstelle einen Feder-Cloud-Gateway-Filter, der das Anforderungsbehörde liest, um eine Nutzlastsignatur zu validieren, bevor die Anfrage an nachgeschaltete Dienste weitergeleitet wird (wie ein Kontodienst für Anmeldung). Ich kann die Antwort aus dem nachgeschalteten Dienst in den Protokollen sehen. /> Ich mutiere den Serverwebexchange mit der neuen Anforderung und der Anrufkette. Filter (...). Blockieren Sie Call (.blockoptional () auf dem DB-Aufruf), alles funktioniert von End-to-End-der nachgeschaltete Dienst wird aufgerufen, und der Kunde erhält die erwartete Antwort. Antwort? < /p>
Ich erstelle einen Feder-Cloud-Gateway-Filter, der das Anforderungsbehörde liest, um eine Nutzlastsignatur zu validieren, bevor die Anfrage an nachgeschaltete Dienste weitergeleitet wird (wie ein Kontodienst für Anmeldung). Ich kann die Antwort aus dem nachgeschalteten Dienst in den Protokollen sehen. /> Ich mutiere den Serverwebexchange mit der neuen Anforderung und der Anrufkette. Filter (...). Blockieren Sie Call (.blockoptional () auf dem DB-Aufruf), alles funktioniert von End-to-End-der nachgeschaltete Dienst wird aufgerufen, und der Kunde erhält die erwartete Antwort. Antwort? < /p> [code] @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { boolean excludeFromAuth = validateRouteExclusions(exchange);
List payloadSignature = exchange.getRequest().getHeaders().get("X-Sign"); List timeStamp = exchange.getRequest().getHeaders().get("T-S"); List userAgent = exchange.getRequest().getHeaders().get("X-U-A"); List contentType = exchange.getRequest().getHeaders().get(HttpHeaders.CONTENT_TYPE);
if (excludeFromAuth) { return chain.filter(exchange); }
return onError(exchange, HttpStatus.FORBIDDEN); } < /code> Oben ist der Blockierungsanruf, der schlecht Ja ist, da er den reaktiven Vorgang besiegt, aber wenn ich von Postman testet, ruft das Gateway den Account -Service -Protokoll der Benutzer zurück und gibt die Anmeldeantwort < /p> Die folgende vollständige Login -Reaktion, die die Login -Reaktion zurückgibt, aber die Login -Reaktion zurückgibt. @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { boolean excludeFromAuth = validateRouteExclusions(exchange);
List payloadSignature = exchange.getRequest().getHeaders().get("X-Payload-Signature"); List timeStamp = exchange.getRequest().getHeaders().get("T-SP"); List userAgent = exchange.getRequest().getHeaders().get("X-U-A"); List contentType = exchange.getRequest().getHeaders().get(HttpHeaders.CONTENT_TYPE);
if (excludeFromAuth) { return chain.filter(exchange); }
if (!isTimeStampValid(timeStampHeader)) {// validate time stamp return onError(exchange, HttpStatus.FORBIDDEN); }
return repository.findByAgentKey(userAgent.get(0)) .flatMap(signatureRecord -> { // Assign or use the signatureRecord here signature = signatureRecord;
Nach dem Upgrade auf Spring Boot 3.4.0 (Spring Web 6.2.0) schlugen meine Gateway-Filtertests fehl. Die Tests haben zuvor überprüft, dass die Anforderungsheader korrekt geändert wurden, aber jetzt...
'DiscoveryClient_UNKNOWN/AdityasLaptop - was unable to refresh its cache! This periodic background refresh will be retried in 30 seconds. status = Cannot execute request on any known server...
Ich habe einen Post-Filter, der versucht, die Trace-ID als Header in die Antwort einzufügen. Ich habe die Vorschläge hier befolgt, aber der TraceContext ist immer noch null.
@Slf4j
@Configuration...
Ich habe einen Post-Filter, der versucht, die Trace-ID als Header in die Antwort einzufügen. Ich habe die Vorschläge hier befolgt, aber der TraceContext ist immer noch null.
@Slf4j
@Configuration...
Ich implementiere eine OpenAPI -Dokumentation in einem Frühlings -Cloud -Gateway -Dienst, der zu mehreren Microservices weiterleitet. Ich habe das Gateway mithilfe von GruppedOpenAPI -Dokumentation...