gpt4 book ai didi

带有 Zuul 代理的 Spring Security Oauth2 SSO

转载 作者:行者123 更新时间:2023-12-03 17:41:05 25 4
gpt4 key购买 nike

我正在修改 oauth2-vanilla sample 来自 Springs excellent security tutorials . oauth2-vanilla 将 Zuul 代理和 UI 组合到一个应用程序中。我想将 Zuul 代理和 UI 分开。 (Zuul 代理应充当 API 网关和多个 UI 的反向代理)。

通过zuul代理访问UI时,应该能够在UI和资源后端之间进行基于Oauth2的SSO。

oauth2-vanilla 看起来像这样



我想搬到这样的地方:



我已经从网关中删除了 UI 部分,并为 ui 添加了一个 zuul 路由

zuul:
routes:
resource:
url: http://localhost:9000
user:
url: http://localhost:9999/uaa/user
ui:
url: http://localhost:8080

我创建了一个新的 UI webapp,其中包含一个 @EnableOAuth2Sso 的 UI(Angular 内容)。注解。

所以我通过 http://localhost:8888 访问用户界面(通过zuul代理)。
在通过 UI 流程进行身份验证和操作后,我可以访问返回用户的/user 端点。 (在调试期间,我看到当我访问/user 端点时,我有一个带有 OAuth2Authentication 的 HTTP session 。

但是,当我访问/resource 端点时,HttpSessionSecurityContextRepository 找不到 session 并且无法使用 OAuth2Authentication 构建上下文。

我创建了 a git repository与修改后的样本。

我猜网关配置有问题。
我尝试更改 cookie 路径,更改代理中的 HttpSecurity 规则,但我无法让它工作。

我不明白的是为什么 UI 在通过代理访问时能够解决 /user端点很好(具有 HTTP session 和 OAuth2Authentication),但无法访问 /resource端点。

此外,由于 UI 现在在 /ui 中运行上下文,似乎我需要在网关中有以下代码才能加载角度 css/js 文件。
.antMatchers("/ui/index.html", "/ui/home.html", "ui/css/**", "/ui/js/**").permitAll().anyRequest().authenticated();

我需要用 zuul ui 路由作为前缀似乎也不对。

任何帮助,将不胜感激。

最佳答案

我永远无法让@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();
}
}

关于带有 Zuul 代理的 Spring Security Oauth2 SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com