如何使用 spring eureka 连接 spring oauth?
How do I wire up spring oauth using spring eureka?
我使用 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 路由和用户信息 uri,这样我就不必指定 url,所有这些都可以通过使用 service-id 来完成。我在这里查看了使用尤里卡的教程:
但我不太明白如何在不将所有 java 添加到我的代码的情况下实现我的目标,因为基本的 eureka 服务器似乎已经注册了我的所有服务。
如果我理解你的问题是正确的,你可以使用这种模式的配置文件:
zuul:
routes:
<service_id>:
path: /path/**
例如(如果您的 oauth-service 注册为 auth
):
zuul:
routes:
auth:
path: /user/**
Zuul 将利用 Eureka 并找到服务的端点。除此之外,它将提供 client-side load-balancing.
使用 eureka 服务 ID 时遇到问题,userInfoUri 过去一直抛出 UnknownHost 异常,@LoadBallanced restTemplate 没有解决我的问题,解决方案是将 prefer-token-info 设置为 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 或主机则需要
我使用 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 路由和用户信息 uri,这样我就不必指定 url,所有这些都可以通过使用 service-id 来完成。我在这里查看了使用尤里卡的教程:
但我不太明白如何在不将所有 java 添加到我的代码的情况下实现我的目标,因为基本的 eureka 服务器似乎已经注册了我的所有服务。
如果我理解你的问题是正确的,你可以使用这种模式的配置文件:
zuul:
routes:
<service_id>:
path: /path/**
例如(如果您的 oauth-service 注册为 auth
):
zuul:
routes:
auth:
path: /user/**
Zuul 将利用 Eureka 并找到服务的端点。除此之外,它将提供 client-side load-balancing.
使用 eureka 服务 ID 时遇到问题,userInfoUri 过去一直抛出 UnknownHost 异常,@LoadBallanced restTemplate 没有解决我的问题,解决方案是将 prefer-token-info 设置为 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 或主机则需要