0

Beim Umschalten von Spring Cloud Brixton.M5 auf Brixton.RC1 übergibt mein ZuulProxy keine Header Authorization an meine Proxy-Dienste.Berechtigungsheader nicht von ZuulProxy übergeben, beginnend mit Brixton.RC1

In meinem Setup sind verschiedene Akteure im Spiel, aber die meisten von ihnen sind ziemlich einfach: - AuthorizationServer: läuft separat; Hände JWTs an Kunden aus - Clients: JWTs von OAuth-Server erhalten; jeweils mit Zugriff auf eine Teilmenge von Ressourcen. - ResourceServers: verbrauchen JWTs für den Zugang Entscheidungen - MyZuulProxy: Proxies verschiedener Resource-Server; sollte JWTs weiterleiten.

Es sollte beachtet werden, dass MyZuulProxy keine Sicherheitsabhängigkeiten hat überhaupt; Es übergab den Header Authorization: Bearer {JWT}, den es an die ResourceServers vor RC1 empfängt. MyZuulProxy ist explizit kein Client selbst und verwendet im Moment nicht @EnableOAuth2SSO oder ähnliches.

Was könnte ich tun MyZuulProxy bekommen die JWTs den ResourceServers wieder neu zu legen, wenn Frühling Wolke Brixton.RC1 mit?

Es gibt sehr wenig Code zum Posten: Es ist nur @EnableZuulProxy, @EnableAuthorizationServer und @EnableResourceServer in drei verschiedenen Gläsern. Meine Kunden sind keine Frühlingsanwendungen.

Antwort

5

Update: Feste in https://github.com/spring-cloud/spring-cloud-netflix/pull/963/files

Sensitive-Header können auch global zuul.sensitiveHeaders Einstellung eingestellt werden. Wenn sensitiveHeaders auf einer Route festgelegt ist, wird dies die globale sensitiveHeaders Einstellung außer Kraft setzen.

So verwenden:

# Pass Authorization header downstream 
zuul: 
    sensitive-headers: Cookie,Set-Cookie 

So https://github.com/spring-cloud/spring-cloud-netflix/issues/944 für eine Korrektur anstehen, war jebeaudet nett genug, um eine Abhilfe zu schaffen:

@Component 
public class RelayTokenFilter extends ZuulFilter { 

@Override 
public Object run() { 
    RequestContext ctx = RequestContext.getCurrentContext(); 

    // Alter ignored headers as per: https://gitter.im/spring-cloud/spring-cloud?at=56fea31f11ea211749c3ed22 
    Set<String> headers = (Set<String>) ctx.get("ignoredHeaders"); 
    // We need our JWT tokens relayed to resource servers 
    headers.remove("authorization"); 

    return null; 
} 

@Override 
public boolean shouldFilter() { 
    return true; 
} 

@Override 
public String filterType() { 
    return "pre"; 
} 

@Override 
public int filterOrder() { 
    return 10000; 
} 
} 
+0

vielen Dank! Diese Problemumgehung erfüllt ihre Aufgabe –

1

Stellen Sie die sensitiveHeaders global hat mir geholfen, die Lösung Ausgabe

zuul: 
    sensitiveHeaders: Cookie,Set-Cookie 

Bitte beachten Sie, dass der Name der Eigenschaft sensitiveHeadersnichtsensitive-Header [I verwenden feder Cloud-Starter-zuul Version: 1.3.1.RELEASE] ist

Verwandte Themen