ana*_*edi 6 oauth-2.0 spring-boot spring-security-oauth2 microservices netflix-zuul
我正在尝试使用 Spring Boot 在工作流中实现上述架构。
我想确保我遵循正确的工作流程。
我想知道是否有任何解决方案实现了类似的用于保护微服务 API 的解决方案。
我有以下困惑:
我知道这是一个有点冗长的问题。但我还没有找到上述架构的合适解决方案。
不幸的是,我没有完整的答案,只有部分内容:
一旦 JWT 令牌可供 zuul 代理使用,那么每个微服务都可以通过配置其资源服务器来授权请求,例如
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests().anyRequest().access("#oauth2.hasScope('microserviceA.read')").and()
.csrf().disable()
.httpBasic().disable();
}
Run Code Online (Sandbox Code Playgroud)
范围可以由带有数据库的 oauth 微服务进行管理 - 基于客户端凭据,它将获取范围信息并编码为 JWT 令牌。
我目前不知道的是 - 如何使 zuul 代理使用“Web 客户端”凭据通过 oauth 对其进行授权 - 我不想对 zuul 代理凭据进行硬编码,因为这样 Web 客户端凭据就赢了不被利用。
我刚刚发布了关于此主题的类似问题: Authorizing requests through spring gateway with zol via oauth server
更新:我找到了描述几乎这种配置的文章(没有尤里卡,但根据我的经验,它并没有增加太多复杂性):https://www.baeldung.com/spring-security-zuul-oauth-jwt,那里是带有源代码的github项目。不幸的是,源代码没有经过完善,因为作者将其用于他的商业课程。但我已经成功地根据他的示例工作集进行了构建。
摘要:在所描述的架构中,每个资源服务器(微服务 A、B、..)都会从请求客户端接收由 zuul 代理/网关转发的 JWT 令牌。令牌在请求标头中转发。如果没有提供有效的令牌,则网关会将请求重定向到授权页面。此外,每个资源服务器都可以使用 oauth 服务检查令牌,如果需要,请按照我上面所写的进行范围检查。
| 归档时间: |
|
| 查看次数: |
7280 次 |
| 最近记录: |