【问题标题】:DIscoverying Oauth Server through Eureka通过 Eureka 发现 Oauth Server
【发布时间】:2015-02-13 03:46:13
【问题描述】:

看下面的例子https://github.com/spring-cloud-samples/sso,授权/认证服务器的URL是在application.yml中预定义的。

问题是,如果我的架构中有配置服务器和 eureka,SSO 服务能否通过 Eureka 发现 authserver,而不是在配置文件中预定义它?

我尝试使用服务名称而不是 localhost:8080 来更改配置文件。没用。

oauth2:
    client:
        tokenUri: http://authserver/uaa/oauth/token
        authorizationUri: http://authserver/uaa/oauth/authorize
        clientId: acme
        clientSecret: acmesecret
     resource:
        jwt:
             keyUri: http://authserver/uaa/oauth/token_key
             id: openid
             serviceId: ${PREFIX:}resource

按照同样的思路,不提供keyUri给JWT,可以直接通过配置服务器填充公钥吗?语法是什么?

编辑:经过更多测试,似乎 tokenUri 和 authorizationUri 很容易被发现。我可以使用服务名称而不是 localhost:8080。现在唯一的问题是如何处理 keyUri。

【问题讨论】:

    标签: spring-security spring-boot spring-cloud


    【解决方案1】:

    问题解决了。根据上面的编辑,tokenUri 和 authorizationUri 是可发现的。我没有使用 keyUri,而是使用 keyValue。这样,SSO 服务器不需要连接到 Oauth 服务器来验证密钥。然后,我使用配置服务器以填充任何其他值的方式填充 keyValue。这使我的授权服务器完全可以被发现。

    【讨论】:

    • 如果这确实有效,我很乐意更新示例并添加一些文档。不过,我想先获得资格:我希望仅当您使用 Spring Cloud 功能区支持中的 RestTemplate 时,使用服务名称而不是主机名才有效。但是 SSO 功能依赖于使用由 Spring OAuth 构建的OAuth2RestTemplate,所以我不明白它是如何知道负载均衡器的。
    • 我刚刚再次测试,它似乎工作得很好。现在,我的 POM 与 github 中的 POM 明显不同。更改依赖项是否足以迫使 SSO 使用 RestTemplate 而不是 OauthRestTemplate?如果是这样,那可能就是原因。
    • 我无法想象这会有什么帮助。你能分享你的项目吗?
    • 好的。让我找到分享的方法。实际上现在遇到了@EnableOAuth2Sso 和 RestTemplate 的问题。一旦将该注释添加到项目中,Spring 就会开始抱怨无法自动装配 RestTemplate。不确定这是否相关。
    • 我也能获得来源的邀请吗?发现 authserver 时遇到问题。我只是收到 ERR_DNS 错误,就像它没有尝试查找一样。
    猜你喜欢
    • 1970-01-01
    • 2020-11-22
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2015-04-12
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多