Spring Cloud Zuul代理背后的Spring OAuth授权服务器

托比亚斯·克雷默

我目前正在开发基于微服务架构的应用程序。我们使用通过Spring Cloud Netfix的Zuul Server实现的API网关将请求路由到我们的微服务。

为了实现我们所有服务的单点登录,我目前正在使用Spring Cloud Security设置OAuth2服务器。服务器基本上只是Dave Syer Repo中实现的复制和过去:https : //github.com/dsyer/spring-security-angular/tree/master/oauth2/authserver

主要区别在于我想通过Zuul代理将请求路由到我的OAuth服务器。这样,我将不必直接公开我的OAuth服务器,并且可以动态添加和删除Login Server。

问题是我不希望了解如何正确配置此设置。当我尝试访问OAuth服务器上的受保护资源时,我将被转发到登录页面。这当然是预期的。但是我不知道如何设置转发时使用的主机名和端口。我要发生的是将服务器转发到Zuul服务器上的终结点,该终结点将被代理回OAuth服务器。(Zuul API网关应该是客户端与之交谈的唯一服务器。其他所有内容都将被隐藏。)

因为它是从HttpServletRequestin读取主机和端口的LoginUrlAuthenticationEntryPoint但是服务器看到的请求是Zuul代理发送的请求。因此,我被转发到内部IP而不是代理上的端点。

我尝试将登录页面WebSecurityConfigurerAdapter.configure(HttpSecurity)的URL设置为Zuul代理的绝对URL。但这只是导致我的应用程序抱怨重定向过多。(可能在那里引起了循环。)

进行此设置的最佳方法是什么?

  • 我是否必须通过重写bean来实现某种自己的转发策略?
  • 我是否缺少配置选项?
  • 我的想法本身错了吗?(在他关于如何避免与Zuul重定向到另一台主机的回答中,Dave Syer说您通常不会代理此服务器,但没有解释原因。)
卡卡威特

更新:POC可以在这里找到https://github.com/kakawait/uaa-behind-zuul-sample


您是否尝试过以下设置(在zuul服务器上):

zuul:
  routes:
    uaa-service:
      path: /uaa/**
      stripPrefix: false

security:
  # Disable Spring Boot basic authentication
  basic:
    enabled: false
  oauth2:
    sso:
      loginPath: /login
    client:
      accessTokenUri: https://<zuul hostname>/uaa/oauth/token
      userAuthorizationUri: https://<zuul hostname>/uaa/oauth/authorize
      ...

基本上,它对我的​​项目有效,我要做的就是禁用路由CSRF保护/uaa/oauth/token

验证服务器应处于开启状态

server:
  # Use different context-path to avoid session cookie overlapping
  context-path: /uaa

经过测试 Spring-Cloud.Brixton.M3


感谢@ thomas-letsch,您应该像下面那样调整安全性(示例)

public void configure(HttpSecurity http) throws Exception { 
    http.logout().and()
        .antMatcher("/**").authorizeRequests() 
        .antMatchers("/index.html", "/home.html", "/", "/uaa/oauth/**").permitAll() 
        .anyRequest().authenticated().and() 
        .csrf().csrfTokenRepository(getCSRFTokenRepository()).ignoringAntMatchers("/uaa/‌​oauth/token").and() 
        .addFilterAfter(createCSRFHeaderFilter(), CsrfFilter.class); 
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Cloud Zuul背后的Spring MVC UI服务表单提交

来自分类Dev

Spring OAuth2解释授权服务器配置

来自分类Dev

Spring Boot OAuth2拆分授权服务器和资源服务器

来自分类Dev

Spring OAuth:带有授权服务器后端的资源服务器

来自分类Dev

spring-security-oauth2 授权端点被授权服务器阻止

来自分类Dev

什么是OAuth2中使用spring cloud微服务的资源服务器

来自分类Dev

在Spring Boot OAuth2授权服务器中使用Active Directory身份验证

来自分类Dev

独立的Spring OAuth2 JWT授权服务器+ CORS

来自分类Dev

Spring OAuth2多服务器注释配置(资源和授权)

来自分类Dev

如何使用 Spring 配置 Oauth2 授权服务器?

来自分类Dev

JS 访问 ZUUL 背后的 Spring REST 服务被 CORS 策略阻止

来自分类Dev

当授权服务器没有访问或刷新令牌时,Spring OAuth2Sso 仍然可以登录用户

来自分类Dev

如何在单个带有Spring Cloud Security Oauth2的Spring引导应用程序中使用多个Oauth2 SSO服务器?

来自分类Dev

Spring Cloud配置服务器.properties内容协商失败

来自分类Dev

Spring Cloud配置服务器与领事之间的区别?

来自分类Dev

Spring Cloud Data Flow服务器故障转移

来自分类Dev

Spring Security OAuth2纯资源服务器

来自分类Dev

Spring OAuth2 - 授权服务器如何处理具有两个客户端实例的安全上下文?

来自分类Dev

spring oauth 2 授权服务器应用程序与另一个应用程序共享相同的安全上下文

来自分类Dev

使用 Jetty 服务器将 Spring Cloud sleuth 添加到 Spring 应用程序

来自分类Dev

Spring Cloud Zuul网关401基本认证

来自分类Dev

Spring Cloud Zuul不转发Cookie

来自分类Dev

Spring Cloud Zuul / Eureka动态路线

来自分类Dev

Spring Cloud Brixton.RELEASE zuul

来自分类Dev

Spring Cloud领事服务名称

来自分类Dev

Spring Cloud Eureka客户端到多个Eureka服务器

来自分类Dev

如何要求Spring Cloud Config服务器从特定分支中检出配置?

来自分类Dev

在Spring Cloud Config服务器中包括多个应用程序的通用配置

来自分类Dev

带有RestTemplate // Ribbon / Eureka的spring-cloud-服务器不可用时重试

Related 相关文章

  1. 1

    Spring Cloud Zuul背后的Spring MVC UI服务表单提交

  2. 2

    Spring OAuth2解释授权服务器配置

  3. 3

    Spring Boot OAuth2拆分授权服务器和资源服务器

  4. 4

    Spring OAuth:带有授权服务器后端的资源服务器

  5. 5

    spring-security-oauth2 授权端点被授权服务器阻止

  6. 6

    什么是OAuth2中使用spring cloud微服务的资源服务器

  7. 7

    在Spring Boot OAuth2授权服务器中使用Active Directory身份验证

  8. 8

    独立的Spring OAuth2 JWT授权服务器+ CORS

  9. 9

    Spring OAuth2多服务器注释配置(资源和授权)

  10. 10

    如何使用 Spring 配置 Oauth2 授权服务器?

  11. 11

    JS 访问 ZUUL 背后的 Spring REST 服务被 CORS 策略阻止

  12. 12

    当授权服务器没有访问或刷新令牌时,Spring OAuth2Sso 仍然可以登录用户

  13. 13

    如何在单个带有Spring Cloud Security Oauth2的Spring引导应用程序中使用多个Oauth2 SSO服务器?

  14. 14

    Spring Cloud配置服务器.properties内容协商失败

  15. 15

    Spring Cloud配置服务器与领事之间的区别?

  16. 16

    Spring Cloud Data Flow服务器故障转移

  17. 17

    Spring Security OAuth2纯资源服务器

  18. 18

    Spring OAuth2 - 授权服务器如何处理具有两个客户端实例的安全上下文?

  19. 19

    spring oauth 2 授权服务器应用程序与另一个应用程序共享相同的安全上下文

  20. 20

    使用 Jetty 服务器将 Spring Cloud sleuth 添加到 Spring 应用程序

  21. 21

    Spring Cloud Zuul网关401基本认证

  22. 22

    Spring Cloud Zuul不转发Cookie

  23. 23

    Spring Cloud Zuul / Eureka动态路线

  24. 24

    Spring Cloud Brixton.RELEASE zuul

  25. 25

    Spring Cloud领事服务名称

  26. 26

    Spring Cloud Eureka客户端到多个Eureka服务器

  27. 27

    如何要求Spring Cloud Config服务器从特定分支中检出配置?

  28. 28

    在Spring Cloud Config服务器中包括多个应用程序的通用配置

  29. 29

    带有RestTemplate // Ribbon / Eureka的spring-cloud-服务器不可用时重试

热门标签

归档