当前位置: 首页 > 知识库问答 >
问题:

如何使用spring eureka连接spring oauth?

黄弘盛
2023-03-14

我使用Spring教程创建了一个单页应用程序,使用AngularJS和OAuth创建一个单页应用程序,可以在以下位置找到:https://Spring . io/guides/tutorials/Spring-security-and-angular-js/# _ multiple _ ui _ applications _ and _ a _ gateway _ Single _ Page _ Application _ with _ Spring _ and _ angular _ js _ part _ VI

这是SPA应用程序的application.yml文件:

security:
  user:
    password: none
  oauth2:
    client:
      accessTokenUri: localhost:7777/uaa/oauth/token
      userAuthorizationUri: localhost:7777/uaa/oauth/authorize
      clientId: acme
      clientSecret: acmesecret
    resource:
      user-info-uri: localhost:7777/uaa/user


zuul:
  routes:
    resource:
      path: /resource/**
      url: localhost:9000/resource
    user:
      path: /user/**
      url: localhost:7777/uaa/user

eureka:
  client:
    serviceUrl:
      defaultZone: ${vcap.services.eureka-service.credentials.uri:127.0.0.1:8761}/eureka/

---
spring:
  profiles: cloud
eureka:
  instance:
    hostname: ${APPLICATION_DOMAIN}
    nonSecurePort: 80

我想知道如何更改zuul路由和user-info-uri,这样我就不必指定URL,所有这些都可以通过使用service-id来完成。我在这里看了使用eureka的教程:

https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka

但是我不太明白如何在不将所有java添加到我的代码中的情况下实现我的目标,因为基本的eureka服务器似乎已经注册了我的所有服务。

共有2个答案

谢财
2023-03-14

如果我理解您的问题正确,您可以在以下模式中使用配置文件:

zuul:
  routes:
    <service_id>:
      path: /path/**

例如(如果您的oauth服务注册为< code>auth):

zuul:
  routes:
    auth:
      path: /user/**

Zuul将利用Eureka并找到服务的endpoint。除此之外,它还将提供客户端负载平衡。

姬弘文
2023-03-14

使用eureka服务id时出现问题,userInfoUri总是抛出UnknownHost异常,@LoadBallanceRestTemplate没有解决我的问题,解决方案是将首选令牌信息设置为false(如果为true-oauth无负载平衡)

security.oauth2.resource.service-id={Service ID as at eureka server registered}
security.oauth2.resource.userInfoUri= http://${security.oauth2.resource.service-id}/user/me
security.oauth2.resource.loadBalanced=true
security.oauth2.resource.prefer-token-info=false

如果使用服务ID,则不需要端口号,但如果使用ip或主机,则需要端口号

 类似资料:
  • 我正在尝试连接到LDAP以对用户进行身份验证。下面是我的代码,但是我不能使用我的C#代码设置SSL。 我从我的应用程序安全小组收到一条消息,我正在发送普通密码,所以我试图通过将身份验证类型设置为安全来保护它,通过尝试将选项设置为 但是我在连接对象中没有看到任何Sessionoption,我正在使用novel.LDAP dll进行LDAP操作。 有谁能帮帮我吗?如何在网络上以安全的方式发送密码供ld

  • 问题内容: 我有一个问题,如果mySQL Server在“睡眠时间” 500秒后终止了会话,则下一个请求不会成功。如果mySQL Server没有关闭睡眠连接,则可能在700秒后发生相同的问题。 我能做什么?遵循我的persistence.xml的属性 如果重要的话,transactiontype为RESOURCE_LOCAL。 问题答案: 您如何配置连接池?如果它是服务器数据源,则应在服务器中设

  • 我有访问密钥、密钥、区域和dynamo DBendpoint,通过它们我可以连接到数据库,并且我在应用程序中保留了配置。属性文件。现在的要求是不在应用程序中保留访问密钥和密钥。属性文件并遵循AWS STS中的Web标识令牌。我已从应用程序中删除访问密钥和密码。属性文件,并具有以下配置。当我启动应用程序时,我收到以下消息 考虑定义COM类型的bean。亚马逊。服务。发电机BV2。AmazonDyna

  • 问题内容: 我这样做是为了连接cassandra。但是我的代码返回了错误。这是我的代码 这是错误日志.. 无法在项目CassandraConnection上执行目标:无法解析项目com.mycompany:CassandraConnection:jar:1.0-SNAPSHOT的依赖项:无法解析以下工件:org.specs2:scalaz- effect_2.11.0-SNAPSHOT:jar:7

  • 我正在制作一个实时多人游戏socket.io和node.js,我有一个html文件,运行一个公共脚本连接到服务器并运行命令,以及定义我需要的库

  • 有关错误和可能的解决方案的更多信息,请阅读以下文章:[Help 1]http://cwiki.apache.org/confluence/display/maven/dependencyresolutionException

  • 下面的代码片段是从JoinedStreams的javadoc复制的 这两个流仅基于一个键(通过< code>t =计算)进行连接 我会问我如何基于多个键进行连接,例如,one.a = two.a和

  • 问题内容: 我想使用Java 7和NIO 2编写异步服务器。 但是我应该怎么用呢? 例如,如果我开始: 然后,当我这样做时,该程序 终止, 因为该调用是 异步的 。如果我将该代码置于无限循环中,则会抛出。 关于如何使用编写一个简单的异步服务器的任何建议? 这是我的完整示例(类似于JavaDoc中的示例): 问题答案: 您走在正确的轨道上,从完成的回调中调用accept()以便接受更多连接应该起作用