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

仅使用Spring Security(或)Spring进行授权

孟晋
2023-03-14

我对授权和Spring Security有疑问。为了在我的一个服务中实现授权检查(在一个面向服务的架构环境下),我尝试看看是否可以使用Spring-Security。在浏览spring security文档时,我在这里读到Spring Security在内部使用Spring的AOP。

参考:您可以选择使用AsheJ或Spring AOP执行方法授权,也可以选择使用html" target="_blank">过滤器执行Web请求授权。您可以一起使用这些方法中的零个、一个、两个或三个。主流的使用模式是执行一些Web请求授权,再加上服务层的一些Spring AOP方法调用授权。

我们已经在服务实现中使用了Spring AOP。在我的例子中,将传入我的RESTful服务的请求将携带一个定制的令牌对象,应该对该对象进行处理以执行授权检查。

基于此,我想了解我是否可以简单地使用Spring并创建一个Aspect来捕获入站请求,提取和处理关联的(自定义构建的)令牌,并根据结果继续/拒绝请求?鉴于通信通道已经使用HTTPS进行保护,我是否需要Spring安全性?

谢谢

SGSI

共有1个答案

龙繁
2023-03-14

很久以前,对于类似的情况,我们做了以下工作:

  1. 使用 HTTP 筛选器从每个请求的 HTTP 标头中提取令牌。
  2. 将提取的标头存储到线程上下文中。
  3. 添加了有关服务方法调用的方面,以检查令牌的线程上下文。

这个策略对我们很有效。在过去的许多年中,我一直在使用Spring Security,因为它对此类问题有一个更为测试和全面的实现。

如果您希望编写自己的令牌传递实现,可以检查Spring Security类<code>SecurityContextHolder<code>的源代码,该类提供了在执行线程上传递安全信息的多种方式。

 类似资料:
  • 我的问题是:为了实现授权,是否有一种简单的方法来更改Olingo JPA处理器以在默认情况下连接表和过滤实体?这将需要我能够传入帐户过滤,也限制所有的结果。 我也尝试过这里描述的预处理和后处理。但是,过滤需要在查询中进行,而不是在返回结果之后,因为JPA查询将返回太多的结果,并且转换数千个对象的时间长且成本高。 到目前为止,我已经实现了一个CustomoDataJPaprocessor。但是,现在

  • 我正在尝试使用Sprint安全框架在Spring Boot中为我的HTTP请求设置授权。我是Spring Security的新手,我找不到任何关于我的情况的文档。 我知道我们必须重写WebSecurity配置适配器方法-configure(AuthenticationManagerBuilder) 这是我试图建立的流程。我的前端和后端托管在不同的域中,所以我也在寻找跨来源的授权。通过发布到REST

  • 我的要求是: 在我的应用程序中,当用户通过登录屏幕(而不是使用Spring Security)登录时,身份验证第一次由定制的第三方API执行。现在,我们几乎没有使用rest服务调用的增强功能。根据要求,在从应用程序发出任何rest调用之前,我们需要根据数据库重新验证用户。由于用户在使用登录屏幕登录时已经进行了验证,并且请求中提供了这些详细信息,因此我计划使用spring security对用户进行

  • 我试图为OData2服务器实现一个自定义授权方案,该方案使用Apache Olingo JPA注释处理器公开;授权涉及一个基本用户:操作对,用于限制数据库上的查询/更新/插入/删除操作;其思想是通过用户名/密码保护服务器层(Tomcat),然后将用户id传播到OData层以执行权限检查。 任何帮助都将不胜感激。 你好,-爱德华多。

  • 我想写一个应用程序,允许与数据交互的两种RESTful形式;常规REST CRUDendpoint和Web-UI。 过去,我在JS中实现了UI的大部分功能,这将调用常规的RESTendpoint。这很好,但对于这个应用程序,我想使用Qute来执行生成页面内容的大部分基本功能。但是,为了正确地管理endpoint并确保正确的RBAC控制,我需要通过cookie而不是普通的头来访问JWT。这似乎是可能

  • 我试图使用keycloak只用于身份验证,并有自己的自定义过滤器用于授权。因此理想的流程是:首先,Keycloak filter对请求进行身份验证,并在上下文中设置身份验证对象。然后,我的自定义过滤器应该运行,它应该获得现有的身份验证对象,在该身份验证对象中添加权限,并将其设置回上下文中。 因此,首先,在speing引导应用程序中使用keycloak是正确的方法吗?如果是,那么如何使我的过滤器在过