Keycloak и Spring Boot: ограничить доступ для каждого пользователя - PullRequest
0 голосов
/ 19 июня 2020

Использование Spring Boot и Keycloak (OAuth2) Я хочу ограничить URI формы /api/{userId}/edit только для пользователя с идентификатором userId.

Я видел несколько примеров настройки доступа к URI в зависимости от роли , но я не нашел никакой информации об ограничении ресурсов в зависимости от пользователя.

Могу ли я получить это с помощью WebSecurityConfigurerAdapter или KeycloakWebSecurityConfigurerAdapter?

1 Ответ

0 голосов
/ 23 июня 2020

Поскольку я использую JWT, я получаю пользователя следующим способом:

private Optional<String> getCurrentUser() {
    SecurityContext securityContext = SecurityContextHolder.getContext();

    return Optional.ofNullable(securityContext.getAuthentication()).map(authentication -> {
        if (authentication.getPrincipal() instanceof Jwt) {
            Jwt jwt = (Jwt) authentication.getPrincipal();
            return jwt.getClaims().get("preferred_username").toString();
        }

        return null;
    });
}

Я преобразовал /api/{userId}/edit URL-адреса в /api/edit, поскольку мне больше не нужен userId в качестве параметра .

...