Wie kann ich Spring Security anweisen, authorizeRequests nur für einen bestimmten Port anzuwenden?
Wir haben unseren neuen Mikrodienst (mithilfe von Spring-Boot) so konfiguriert, dass sich die offizielle API auf Port 8080 befindet (der außerhalb unseres virtuellen Netzwerks auf normales HTTPS auf Port 443 abgebildet wird), während sich einige Verwaltungsfunktionen auf einer sekundären Ebene befinden HTTP-Port 7979. Diese werden nur innerhalb des virtuellen Netzwerks verwendet und dienen zur Überwachung, zum Lastenausgleich usw.
er @All-API-Zugriff muss mit OAuth gesichert werden, während die Verwaltungsfunktionen im Netzwerk frei zugänglich sein müssen. So haben wir die Spring-Sicherheit konfiguriert (http ist ein HttpSecurity-Objekt):
http
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)
.and()
.authorizeRequests()
.antMatchers("/info").anonymous()
.antMatchers("/health").anonymous()
.antMatchers(HttpMethod.GET, "/warehouses/**").access(oauthScopeRead)
.antMatchers(HttpMethod.PUT, "/warehouses/**").access(oauthScopeWrite)
.anyRequest().denyAll();
Dies hat Auswirkungen auf beide Ports:/info
und/health
sind nicht autorisiert, während/warehouses
benötigt Authentifizierung, und alles andere benötigt auch Authentifizierung (gibt 401 zurück, aber beim Aufrufen mit Authentifizierung wird 403 zurückgegeben).
Als es kein @ gi/info
oder/health
auf dem öffentlichen Port geben diese 404 für nicht autorisierte Benutzer zurück, während alles andere 401 zurückgibt. Ich bin damit unzufrieden und hätte gerne
Ich konnte nichts über Ports in den Spring Security Javadocs oder @ findereference documentation.
Was kann ich hier machen?