当前位置: 首页 > 知识库问答 >
问题:

将Spring Security注释与KeyClope结合使用

薄伟彦
2023-03-14

我只是Spring Security的初学者,但我想知道是否可以使用@PreAuthorize@PostAuthorize@Secured和其他注释来配置KeyClope。例如,我在我的简单spring Rest webapp中配置了keydape-Spring Security适配器和Spring Security性,这样我就可以访问控制器中的主体对象,如下所示:

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

我有例外:

组织。springframework。安全认证。AuthenticationCredentialsNotFoundException:在SecurityContext中找不到身份验证对象

在我的Spring Securityhtml" target="_blank">配置中,我启用了全局方法安全性:

我需要什么才能让这个Spring的安全注释生效?有可能在这种情况下使用这个注释吗?

共有2个答案

蒲坚
2023-03-14

下面是示例代码:

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

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

除了这个代码。你需要做领域角色和客户端(应用程序角色)的角色映射。应用程序角色将放在@PreAuthorize中

羊舌承
2023-03-14

您仍然需要使用KeyClope配置Spring Security性。请参阅适配器文档,了解基于注释的配置。一旦设置好,Spring Security注释将在授权通话中起作用。

 类似资料:
  • 我试图在一个带有spring security和KeyClope的java应用程序中同时使用领域和资源角色。不幸的是,KeyClope只会返回一个或另一个,具体取决于: 您仍然可以通过自定义代码获得这两种方法,但它会弄乱@PreAuthorize或spring boot方法等注释。isUserInRole,这会导致难看的代码。 有没有办法覆盖@PreAuthorize方法或JSON令牌Keyclo

  • 我想使用控制器和存储库创建具有Spring Boot上下文配置的完整JUnit测试。我的测试类如下所示: 我有标准的用户实体、UserController和UserRepository。我在应用程序中配置了数据源。属性,但我无法运行@SpringBootTest和@DataJpaTest-toogether。这是错误消息:

  • 所以我试图让Hibernate Validator注释处理器在Kotlin项目中工作,来检查我的JSR 380注释,运气不太好。 不幸的是,文档中没有提到如何用Gradle设置它,很明显,对于Kotlin,我们必须使用“Kapt”来启用java注释处理器。 Hibernate验证器注释处理器文档:http://docs.jboss.org/hibernate/stable/validator/re

  • 有可能将融合模式注册与AWS MSK集成吗?如果你以前这样做过,你能提供一些你实现它的方法/博客吗?

  • 我试图将一个参数传递到JPA查询示例代码中 但由于样本(:百分位),我得到了一个错误。如果我只是在那里硬编码一个数字,它可以工作,但不能与参数。有没有办法摆脱括号或类似的东西?谢谢

  • 我使用AWS加密客户端。下面的代码抛出错误为 错误:@DoNotTouch不适用于现场 然而,如果我给出@DoNotTouch配置,如下所示[使用getter和setter] 这很好用。我猜lombok生成的getter和setter不会被AmazoneCryptionClient识别 我在跟踪这个aws doc:https://aws.amazon.com/blogs/developer/cli