问候,

我是初学者正在学习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 .

你能帮助我找出我在这个配置中缺少的东西吗?万分感激 .