Keycloak & Spring Boot:限制每个用户的访问

Keycloak & Spring Boot: restrict access per user

使用 Spring Boot 和 Keycloak (OAuth2) 我想将形式为 /api/{userId}/edit 的 URI 限制为只有 ID 为 userId.

的用户

我看过几个根据角色配置对 URI 的访问的示例,但我没有找到任何有关根据用户限制资源的信息。

我可以使用 WebSecurityConfigurerAdapter 或 KeycloakWebSecurityConfigurerAdapter 获取吗?

由于我使用的是 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 作为参数。