我遇到了micro-spring-docker的一些问题,我想也许sso token-url不正确。
演示https://github.com/keryhu/micro-oauth2-docker
在本地计算机中,sso服务和身份验证服务正常工作。
但不是在docker容器中,
问题是重定向到auth-server Timeout。
SSO(pc-gateway service)application.yml:
security:
user:
password: none
oauth2:
client:
accessTokenUri: http://${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}:9999/uaa/oauth/token
userAuthorizationUri: http://${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}:9999/uaa/oauth/authorize
搬运工-compose.yml
eureka:
image: eureka:0.0.1-SNAPSHOT
container_name: eureka
hostname: eureka
ports:
- "8761:8761"
configserver:
image: config-server:0.0.1-SNAPSHOT
container_name: configserver
hostname: configserver
links:
- eureka
ports:
- "8888:8888"
authserver:
image: auth-server:0.0.1-SNAPSHOT
container_name: authserver
hostname: authserver
links:
- eureka
- configserver
ports:
- "9999:9999"
pcgateway:
image: pc-gateway:0.0.1-SNAPSHOT
container_name: pcgateway
hostname: pcgateway
links:
- eureka
- configserver
- authserver
ports:
- "8080:8080"
在docker容器中启动后:
http://192.168.99.100:8761/显示:
Instances currently registered with Eureka
Application AMIs Availability Zones Status
AUTHSERVER n/a(1) (1) UP (1) - authserver:authserver:9999
CONFIGSERVER n/a(1) (1) UP (1) - configserver:configserver:8888
PCGATEWAY n/a(1) (1) UP (1) - pcgateway:pcgateway:8080
但是当打开身份验证页面时:http://192.168.99.100:8080
它应该被重定向到auth-server登录页面,但是它打开了Timeout,地址栏是:
http://172.17.0.4:9999/uaa/oauth/authorize?client_id=clientapp&redirect_uri=http://192.168.99.100:8080/login&response_type=code&state=cdXhfg
我不知道为什么,也许上面的sso tokenurl不正确。如何解决?
答案 0 :(得分:2)
172.17.0.4
IP地址是内部(容器 - 容器)网络上authserver
容器的IP地址,不可从docker主机(虚拟机)外部访问。
这可能很棘手,因为(在这种情况下)您需要提供Docker运行的虚拟机的IP地址,这可能更改,并且肯定会在生产中有所不同。
如果您将${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}
更改为192.168.99.100
,则应该有效。
我建议使用您在docker-compose.yml中提供的环境变量来配置IP地址(或域),例如:
${DOMAIN_NAME:192.168.99.100}
默认为"标准"虚拟机的IP地址。在生产中,您可以传递项目运行的服务器的实际域名或IP地址。
请注意"链接"环境变量被标记为已弃用,且仅为 用于默认(网桥)网络。新的链接功能不会创建 这些变量,但您可以通过 name 链接到其他容器。看到 https://docs.docker.com/engine/userguide/networking/work-with-networks/#linking-containers-in-user-defined-networks