Я пытаюсь защитить приложение Spring Boot 2.2.2 с помощью Keycloak 8.0.1.
Маркер JWT выглядит следующим образом (обратите внимание на дополнительное поле customer_id):
{ user: {
authorities: [...],
details: {
roles: [...],
principal: {
name: "first",
keycloakSecurityContext: {
token: {
...,
customer_id: "first",
...
} } } } } }
Я хочу защитить эту точку входа:
// eg.: http://localhost:9000/customers/first
@GetMapping(@Path path = "/customers/{customerId}")
@PreAuthorize("hasPermission(????.customer_id == #customerId)
public Object customerEntryPoint(@PathVariable String customerId) {
...
}
Что будет подходящим выражением @PreAuthorization, поэтому я сравниваю поле customer_id в токене с предоставленным параметром customerId?