问候语,
我是初学者正在学习网络身份验证,并希望在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事件中,我看到登录成功,并建立了会话。我检查了tomcat输出,然后找到了以下内容:
07-Apr-2017 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服务器容器建立HTTP客户端连接。我可以从tomcat容器ping主机ip。
你能帮我找一下我在这个配置中缺少的东西吗?真的很感激。