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

Spring Security OAuth类型安全SpEL builder

姚浩歌
2023-03-14

我们正在用spring security spring security oauth实现一个OAuth2资源服务器。

用例非常简单:

  • A.某些资源仅适用于授权客户

对于Java配置,为了加强安全约束,我们使用了很多像这样的SpEL:

@Override
public void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()

             // A. Only authorized clients
             .antMatchers("/type-a").html" target="_blank">access("#oauth2.hasScope('READ_SOMETHING')")

             // B. Both authorized clients and users
             .antMatchers("/type-b").access("#oauth2.hasScope('READ_SOMETHING_ELSE') or (!#oauth2.isOAuth() and hasRole('ROLE_USER'))")

             // ... (different flavors of B.) ...

             // C. Everything else is for authenticated users
            .anyRequest().hasRole("USER")
            .and().httpBasic();
}

虽然这很好用,但我不喜欢:

  1. SpEL标记本身可能会变得棘手,直到运行时才能进行验证

一般来说,对于Spring Security,由安全配置基类(WebSecurityConfigrerAdapter,ResourceServerConfigrerAdapter)提供的HttpSecurity生成器非常适合简单的约束,但是复合/复杂的约束最终会出现在SpEL中。

使用spring-security-oauth2,除了SpEL,我不知道还有什么其他方法。

问题:是否有任何现有的实用程序类为OAuth2 SpEL提供某种类型安全的fluent builder?

类似的东西:

TypicalPerfectlyNamedSpringFrameworkDreamClass.builder()
    .startExpressionGroup()
        .hasOAuth2Scope("MY-SCOPE")
    .endExpressionGroup()
    .or()
    .startExpressionGroup()
        .isNotOAuth2Request()
        .and()
        .hasRole("ROLE_USER")
    .endExpressionGroup()
    .toString();

共有1个答案

严言
2023-03-14

简短的回答:“不,没有这种功利”。

 类似资料:
  • 问题内容: 经过数小时的奋斗,我终于找到了那些令人讨厌的s的来源,我认为它们是由Hibernate产生的,它是- 映射的。 但是它们来自我的JSF视图,我从 回到我的后援豆。 我的数据仅包含一个枚举的值: 。 当我在-class中测试setter时,我真的很震惊: 更改为完美工作。 这怎么可能?这些泛型不是应该是类型安全的,还是与JSF相关的类型擦除会杀死整个类型安全的东西? 还不应该像我通过?传

  • 我想使用MongoDB用NestJs和TypeORM创建一个应用程序。假设我有一个实体,除了ID字段外,还有两个唯一的字段 当我想用已经存在的或创建一个新模块时,我得到了以下异常错误 因此,在catch语句中,我必须处理传入的错误。我要做的是 TypeORM是否公开预制异常?是否有我可以使用的枚举?获取这些TypeORM数据库错误的好方法是什么? 这里似乎列出了一些错误 https://githu

  • unsafe库徘徊在“类型安全”边缘,由于它们绕过了Golang的内存安全原则,一般被认为使用该库是不安全的。但是,在许多情况下,unsafe库的作用又是不可替代的,灵活地使用它们可以实现对内存的直接读写操作。在reflect库、syscall库以及其他许多需要操作内存的开源项目中都有对它的引用。 unsafe库源码极少,只有两个类型的定义和三个方法的声明。 Arbitrary 类型 官方导出这个

  • 安全类包含一些方法,能帮助您创建安全的应用程序,对输入的数据进行安全方面的处理. XSS 过滤 CodeIgniter 包含了跨站脚本攻击的防御机制,它可以自动地对所有POST以及COOKIE数据进行过滤,或者您也可以针对单个项目来运行它。默认情况下,它 不会 全局运行,因为这样也需要一些执行开销,况且您也不一定在所有情况下都用得到它. XSS过滤器会查找那些常被用来触发JavaScript或者其

  • 安全类包含了一些方法,用于安全的处理输入数据,帮助你创建一个安全的应用。 XSS 过滤 跨站请求伪造(CSRF) 类参考 XSS 过滤 CodeIgniter comes with a Cross Site Scripting prevention filter, which looks for commonly used techniques to trigger JavaScript or o

  • 我有一个通用类。它看起来像这样: 显然,conevertdatajsonstring方法仅在字符串类型为T时调用。但有一个警告: 类型安全:未选中从字符串转换为T 有没有一种方法可以在不使用SuppressWarnings的情况下解决此问题: @抑制警告(“未选中”) 方法之前?