如何仅使用客户端的 ID 和密钥保护 url 路径?



我正在尝试使用Spring配置RESTFul web服务,并且我已经配置了OAuth。因此,我得到了几个需要用户OAuth令牌的页面。然而,我有一些页面是匿名访问的,比如注册或忘记密码。

像www.mywebsite.com/api/doStuff[GET/POST]这样的页面需要有效的OAuth令牌来保护,但我如何保护像www.mywerbsite.com/api/signup[POST]这样只有客户端ID机密的页面,并带有标题的授权:基本[Base64EncodedString]

我不希望那些"不安全的页面"被任何人访问,除了像移动应用程序(iOS/Android)这样的客户端。

这是我的ResourceServerConfigurerAdapter类中的configure(HttpSecurity)方法

public void configure(HttpSecurity http) throws Exception {
http
    .requestMatchers().antMatchers("/api/**")
.and()
    .authorizeRequests()
    .antMatchers("/api/doStuff", "/api/getOtherStuff").access("#oauth2.hasScope('read') and hasRole('ROLE_USER')")
    .antMatchers("/api/signup").access("#oauth2.isClient()") // Not working like I thought...
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}

谢谢你的帮助!

如果你想对一些资源使用基本身份验证,你最好创建一个单独的过滤器链(即一个新的WebSecurityConfigurerAdapter),并用规则将其设置为只匹配你想要保护的路径。

最新更新