gpt4 book ai didi

spring - 将 Spring Security 注解与 keycloak 一起使用

转载 作者:行者123 更新时间:2023-12-02 23:54:52 26 4
gpt4 key购买 nike

我只是 Spring Security 的初学者,但我想知道是否可以使用 @PreAuthorize@PostAuthorize 的方式配置 keycloak >、@Secured 等注释。例如,我在简单的 Spring Rest Web 应用程序中配置了 keycloak-spring-security-adapter 和 Spring Security,以便我可以访问 Controller 中的 Primary 对象,如下所示:

@RestController
public class TMSRestController {

@RequestMapping("/greeting")
public Greeting greeting(Principal principal, @RequestParam(value="name") String name) {
return new Greeting(String.format(template, name));
}
...
}

但是当我尝试这个时(只是一个例子,实际上我想在授权之前执行自定义 EL 表达式):

@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));
}
...
}

我得到异常:

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext

在我的 spring 安全配置中,我启用了全局方法安全性:

我需要什么才能使这个 Spring 安全注释起作用?是否可以在这种情况下使用此注释?

最佳答案

这里是示例代码:

@EnableWebSecurity
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true,
securedEnabled = true,
jsr250Enabled = true)
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
}

@PreAuthorize("hasRole('ROLE_ADMIN')")

除了这段代码。您需要为领域角色和客户端(应用程序角色)进行角色映射。应用程序角色将放入@PreAuthorize

关于spring - 将 Spring Security 注解与 keycloak 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com