Spring boot OAuth2 SSO群集

时间:2017-04-10 09:36:49

标签: spring oauth-2.0 single-sign-on

我是使用Spring boot,Spring OAuth2构建SSO服务器。在独立模式下,令牌存储在内存中,运行完美。但现在,我想在多台服务器上运行SSO服务器。我用JDBC更改了存储策略,然后在端口9999和9998上运行了两个实例。我不知道如何配置application.yml文件的客户端和资源服务器。我在客户端服务器上尝试了以下配置:

security:
  basic:
    enabled: false
  oauth2:
    client:
      client-id: mud
      client-secret: mud
      access-token-uri: http://localhost:9999/oauth/token,http://localhost:9998/oauth/token
      user-authorization-uri: http://localhost:9999/oauth/authorize,http://localhost:9998/oauth/authorize
      scope: read, write
    resource:
      token-info-uri: http://localhost:9999/oauth/check_token,http://localhost:9998/oauth/check_token

无效......当我访问资源时,SSO服务器会重定向到“http://localhost:9999/oauth/token,http://localhost:9998/oauth/token”。

如何在春季配置多个SSO认证服务器?

2 个答案:

答案 0 :(得分:0)

我想使用zuul来解决此问题,我在客户端服务器上尝试了以下配置:

server:
  port: 8080
security:
  basic:
    enabled: false
  oauth2:                                              
    client:
      client-id: mud
      client-secret: mud
      access-token-uri: http://localhost:8080/proxy/oauth/token
      user-authorization-uri: http://localhost:8080/proxy/oauth/authorize
      scope: read, write
    resource:
      token-info-uri: http://localhost:8080/proxy/oauth/check_token
  ignored: /proxy/oauth/token, /proxy/oauth/authorize, /proxy/oauth/check_token
zuul:
  routes:
    auth-server:
      path: /proxy/**
      serviceId: mud-microservice-security
mud-microservice-security:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule

当我像127.0.0.1:8080/env一样访问此客户端时,它可以重定向到SSO服务器的登录页面。但是当登录成功时,它不会重定向到127.0.0.1:8080/env并再次访问127.0.0.1:8080/env,它将重定向到登录页面。

答案 1 :(得分:0)

我认为您应该为您的oauth实例配置会话共享