问候,
我是初学者正在学习Web身份验证,并希望在docker compose中尝试使用tomcat和keycloak . 我将它们放在一个docker-compose.yml中,如下所示:
version: '2'
services:
postgres:
image: postgres
ports:
- "5432:5432"
environment:
POSTGRES_DATABASE: 'keycloak'
POSTGRES_USER: 'keycloak'
POSTGRES_PASSWORD: 'keycloak'
POSTGRES_ROOT_PASSWORD: 'test'
volumes:
- ./postgres:/mnt/shares/postgres
keycloak:
image: jboss/keycloak-postgres
ports:
- "800:8080"
links:
- postgres
environment:
POSTGRES_PORT_5432_TCP_ADDR: 'postgres'
POSTGRES_DATABASE: 'keycloak'
POSTGRES_USER: 'keycloak'
POSTGRES_PASSWORD: 'keycloak'
KEYCLOAK_USER: 'admin'
KEYCLOAK_PASSWORD: 'admin'
POSTGRES_ROOT_PASSWORD: 'test'
depends_on:
- postgres
volumes:
- ./keycloak:/mnt/shares/keycloak
tomcat_keycloak:
build: .
ports:
- "880:8080"
volumes:
- ./web:/mnt/shares/web
- ./scratches:/mnt/shares/scratches
这可以发射很好 . 接下来,我在keycloak中创建了领域,客户端和用户,获得了tomcat的keycloak.json,如下所示:
{
"realm": "TestRealm",
"auth-server-url": "http://192.168.208.130:800/auth",
"ssl-required": "external",
"resource": "test-client",
"public-client": true,
"use-resource-role-mappings": true
}
其中192.168.208.130是我的主机IP地址 . 然后我在我的tomcat服务器上尝试了一个静态Web链接 . 我可以被重定向到keycloak登录页面 . 但是在输入用户名和密码后,我获得了HTTP状态403.在keycloak事件中,我看到登录成功,并 Build 了会话 . 我检查了tomcat输出,然后发现以下内容:
2017年4月7日17:37:04.240 INFO [http-apr-8080-exec-4] org.apache.http.impl.client.DefaultHttpClient.tryConnect I / O异常(java.net.NoRouteToHostException)在连接时被捕获{} - > http://192.168.208.130:800:无主机路由(主机无法访问)
从我的tomcat容器看起来,我无法通过主机IP地址中的URL与我的keycloak服务器容器 Build HTTP客户端连接 . 我可以从tomcat容器ping主机ip .
你能帮助我找出我在这个配置中缺少的东西吗?万分感激 .