Ich bin nur ein Anfänger in Spring Security, aber ich würde gerne wissen, ist es möglich, Keycloak in einer Weise zu konfigurieren, die ich @PreAuthorize
, @PostAuthorize
, @Secured
und andere Anmerkungen verwenden kann. Zum Beispiel habe ich die keycloak-spring-security-adapter
und Spring Security in meiner einfachen Federauflage Webapp so konfiguriert, dass ich Zugriff auf Principal-Objekt in meinem Controller haben, wie folgt aus:Verwenden von Feder Sicherheitsanmerkungen mit Schlüsselhülle
@RestController
public class TMSRestController {
@RequestMapping("/greeting")
public Greeting greeting(Principal principal, @RequestParam(value="name") String name) {
return new Greeting(String.format(template, name));
}
...
}
Aber wenn ich versuche, diese (nur ein Beispiel eigentlich mag ich benutzerdefinierten EL Ausdruck vor der Genehmigung zur Ausführung):
@RestController
public class TMSRestController {
@RequestMapping("/greeting")
@PreAuthorize("hasRole('ADMIN')")
public Greeting greeting(Principal principal, @RequestParam(value="name") String name) {
return new Greeting(String.format(template, name));
}
...
}
I Ausnahme erhalten:
org.springframework.security.authentication. AuthenticationCredentialsNotFoundException: Ein Objekt-Authentifizierung wurde nicht in der Security gefunden
In meiner Feder Sicherheits Config I globale Methode Sicherheit aktiviert:
Was muss ich in diesem Frühjahr Sicherheit Anmerkungen arbeiten machen? Kann diese Annotation überhaupt in diesem Zusammenhang verwendet werden?
Die Antwort war vor einiger Zeit, aber ich habe ein ähnliches Problem mit Spring Security und Keycloak. In meiner Spring Boot-Anwendung habe ich den Adapter konfiguriert, konnte aber '@ PreAuthorize (" hasAuthority ('user') ")' 'nicht verwenden. Wenn eine Anfrage gesendet wurde, hatte die Anmerkung keine Wirkung. Ich habe es jetzt behoben, indem ich '@EnableGlobalMethodSecurity (prePostEnabled = true)' zu meiner Sicherheitskonfiguration hinzugefügt habe. – hesch