对于提供受OAuth 2保护的REST API的基于Spring Boot的Web应用程序,如何在向方法转发请求之前拦截访问令牌?
具体来说,,
该应用程序通过@EnableResourceServer
作为资源服务器启用,其API受OAuth 2保护(特别是云铸造用户帐户和身份验证)。
现在,对于对具有@RequestMapping
的方法的任何请求,都需要从OAuth 2获得一个访问令牌。例如
Curl-H"授权:承载[令牌]"[api]
为了实现细粒度的访问控制,
在请求到达时,我想解析访问令牌,并根据访问令牌的内容(具体地说,Scope
)转发或拒绝请求,希望是在一个中心位置(可能有点像interceptor
)。如何做到这一点?
您可以在身份验证之前添加自定义筛选器
例如
@Configuration
public class CustomWebSecurityConfigurerAdapter
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilterBefore(
new CustomFilter(), BasicAuthenticationFilter.class);
}
}
http://www.baeldung.com/spring-security-custom-filter
问题内容: 我有两节课。 类具有受保护的方法,是的实例。 Class 与class在同一包中。 我正在尝试访问,但正在获取… 怎么了? 问题答案: 编译器应该捕获这样的错误。当您显然在运行时得到此消息时,发生了一些奇怪的事情。可能您已更改了源代码,但已完全重新编译。 另一个潜在但晦涩的问题是通过不同的类加载器加载类。即使包名称相同,从不同的类加载器加载的类也将位于不同的包中(以与由不同的类加载器加
我熟悉。正如我在spring文档http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/aop.html中看到的,基于代理的概念。 在8.2.3.1支持的切入点指定器部分中,我发现了下面的注释 由于Spring的AOP框架的基于代理的性质,受保护的方法根据定义是不被拦截的,对于JDK代理(如果这不适用)和CGL
问题内容: 在下面的代码中,Consumer类可以访问Parent类的受保护方法。由于Parent和Consumer类之间没有关系,这怎么可能。 谢谢 问题答案: 表示:相同的包或通过继承。由于您的课程都在(实际上不建议使用),因此可以进行访问。顺便说一句:如果您尝试测试Java访问控制,则会忘记(= no修饰符= )。 另一方面,访问是指:从该特定类(以及仍然是主机类成员的非静态内部类)之外的任
我想做基于令牌的机制,我将有要么温泉或移动应用程序支持多个客户端。 我的web服务引擎和应用程序的用例: 我的web应用程序:客户将注册他们的应用程序,无论是SPA还是移动应用程序。他们将在注册时获得客户id。在SPA或移动应用程序的情况下,只有作为密钥的客户端id会被泄露,因此我只提供客户端id。 Web服务引擎:支持多个客户端,登录客户端各自的应用程序后管理每个用户的会话。 因此,假设有 2
我有两个不同包的亲子班。我正在重写受保护类型的方法。我想访问子类中的超类保护方法。 考虑以下代码: 认为我是Java新手,并在main方法中提供替代comment的答案。
问题内容: 关键字授予对相同包和子类(http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)中的类的访问权限。 现在,每个类都有一个超类(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)。 因此,我得出结论,即使每个类都可以访问的方法。