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
作为参数。
使用 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
作为参数。