小编And*_*rul的帖子

使用带有keycloak的spring安全注释

我只是一个Spring Security的初学者,但我想知道的是有可能的方式,我可以使用配置keycloak @PreAuthorize,@PostAuthorize,@Secured和其他注释.例如,我keycloak-spring-security-adapter在我的简单Spring Rest webapp中配置了Spring Security,以便我可以访问控制器中的Principal对象,如下所示:

@RestController
public class TMSRestController {

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

但是当我尝试这个时(只是一个例子,实际上我想在授权之前执行自定义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));
    }
...
}
Run Code Online (Sandbox Code Playgroud)

我得到例外:

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException:在SecurityContext中找不到Authentication对象

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

我需要做什么才能使这个弹簧安全注释工作?是否可以在此上下文中使用此注释?

spring spring-security pre-authentication keycloak

7
推荐指数
2
解决办法
4725
查看次数