dde*_*ele 5 spring spring-security spring-security-oauth2 spring-cloud
我正在修改来自Springs优秀安全教程的oauth2-vanilla样本.oauth2-vanilla将Zuul Proxy和UI组合到一个应用程序中.我想分开Zuul代理和UI.(Zuul代理应充当API网关和多个UI的反向代理).
当通过zuul代理访问UI时,它应该能够在UI和资源后端之间基于Oauth2进行SSO.
oauth2-vanilla看起来像这样

我想转向这样的地方:

我已经从网关中删除了UI部分,并为ui添加了一个zuul路由
@EnableOAuth2Sso
我创建了一个新的UI webapp,其中包含带有/user注释的UI(Angular stuff).
所以我通过http:// localhost:8888(通过zuul代理)访问UI .在验证并完成UI流程后,我可以访问返回给用户的/ user端点.(在调试期间,我看到当我访问/ user端点时,我有一个带有OAuth2Authentication的HTTP会话.
但是,当我访问/ resource端点时,HttpSessionSecurityContextRepository无法找到会话,也无法使用OAuth2Authentication构建上下文.
我用修改后的样本创建了一个git存储库.
我猜测网关配置有问题.我已经尝试更改cookie路径,更改代理中的HttpSecurity规则,但我无法让它工作.
我不明白的是,为什么UI通过代理访问时能够/resource很好地解析端点(使用HTTP会话和OAuth2Authentication),但无法访问/ui端点.
此外,由于UI现在在@EnableOAuth2Sso上下文中运行,似乎我需要在网关中使用以下代码来加载角度css/js文件.
/user
我需要用zuul ui路由作为前缀,这似乎也不对.
任何帮助,将不胜感激.
小智 0
我始终无法让@EnableOauthSso 工作。相反,我注释为 @EnableResourceServer 并为 Zuul 创建了安全配置。
@Configuration
@EnableResourceServer
public class JwtSecurityConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/oauth/**").permitAll()
.antMatchers("/**").hasAuthority("ROLE_API")
.and()
.csrf().disable();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5754 次 |
| 最近记录: |