在代码中有配置"/oauth/*" 不需要登录认证
.and()
.authorizeRequests()//对下面请求
.antMatchers("/authentication/require","/oauth/*"
,securityProperties.getBrowser().getLoginPage()
,"/code/*").permitAll()//对这些个请求不需要身份验证
.anyRequest()//任何请求
.authenticated()//都需要认证 /登录
1
skypyb 2020-01-22 18:56:00 +08:00 1
实现入参是 WebSecurity 这个参数的方法:configure(WebSecurity web)
然后方法体内书写 web.ignoring().antMatchers(HttpMethod.POST,"/oauth/*"); 试一下 |
2
rqxiao OP @skypyb 额 查了半天说貌似 SpringSecurityOAuth 的授权码模式 获取授权码(/oauth/authorize )这一步是需要登录(例如 httpbasic 方式)的,密码模式( password )就是直接传账密获取 token,就只有一步了,不需要登录
也有可能我说的不太对 |
3
hantsy 2020-01-23 11:48:20 +08:00
@rqxiao 用 Code Flow 的时候, /oauth/* 需要 ClientId,ClientSecret,这个一般通过 HttpBasic 传递,也可以通过 Form 参数方式(一般可配置)。
Resource owner Password Flow 不是所有的 IdP 都支持,一般 Authorization Code Flow 最常见。Client Credentials 设计用 Client 操作。Implicit 是简化的 Code, 很多 IDP 认为有安全问题,不支持。 https://oauth.net/2/ |