在Docker中使用KeyClope建立集成测试环境

在Docker中使用KeyClope建立集成测试环境,docker,ssl,openssl,docker-compose,keycloak,Docker,Ssl,Openssl,Docker Compose,Keycloak,我正在尝试为我们的一个Web API项目设置集成测试环境,该项目使用KeyClope进行保护。我的想法是创建docker compose文件,在其中连接所有必需的组件,然后尝试调用托管在contained中的Web API并验证响应 下面是docker compose文件的示例,它将Key斗篷和Web API连接在一起 keycloak: image: jboss/keycloak:3.4.3.Final environment: DB_VENDOR: POSTGRES

我正在尝试为我们的一个Web API项目设置集成测试环境,该项目使用KeyClope进行保护。我的想法是创建docker compose文件,在其中连接所有必需的组件,然后尝试调用托管在contained中的Web API并验证响应

下面是docker compose文件的示例,它将Key斗篷和Web API连接在一起

keycloak:
  image: jboss/keycloak:3.4.3.Final
  environment:
    DB_VENDOR: POSTGRES
    KEYCLOAK_USER: admin
    KEYCLOAK_PASSWORD: admin
    POSTGRES_USER: keycloak
    POSTGRES_PASSWORD: keycloak
    POSTGRES_PORT_5432_TCP_ADDR: postgres
    POSTGRES_DATABASE: keycloak
    JDBC_PARAMS: 'connectTimeout=30'
  ports:
    - '18080:8080'
    - '18443:8443'
  networks:
    - integration-test
  depends_on:
    - postgres

test-web-api:
    image: test-web-api
    environment:
    - IDENTITY_SERVER_URL=https://keycloak:18443/auth/realms/myrealm
    networks:
    - integration-test
    ports:
    - "28080:8080"
现在,当我在不同的容器中托管Key斗篷和Web API时,我无法使用localhost从Web API容器访问Key斗篷,因此我需要使用,但当我尝试使用它并获取时,例如。Key斗篷的已知/openid配置我获取连接拒绝错误:

root@0e77e9623717:/app curl curl:7无法连接到KeyClope端口18443:连接被拒绝

从文档中,我发现我需要在keydove上启用SSL,但整个过程有点混乱,并且不太清楚该证书使用哪个域


如果有人对我这样的情况有任何经验并能与我分享,那就太好了

不清楚您是如何配置集成测试网络的,您在哪里运行集成测试主机、容器以获得确切答案

但我试过了。对于从主机进行的KeyClope访问:

https://<host IP or name>:18443/ 
因此,请尝试配置测试web api:


您的测试web api应该能够访问KeyClope。

这对您来说效果如何?我想知道在CI/CD管道中设置KeyClope并为使用它的应用程序进行集成测试是否是一种好的做法。也许嘲笑它更好?我在一个Spring Boot应用程序中使用KeyClope对用户进行身份验证和授权。我们有一个特定于测试的TestKeyCloac图像,其中包含预定义的用户列表,这些用户具有不同的权限,我们用于不同的调用,它就像一个符咒!已经在几个项目中使用了它。我不太喜欢模仿功能,每次当我有机会使用真正的组件时,我肯定会使用它:我刚开始使用KeyClope,正考虑用它来制作。只是为了确保,在测试中,您正在与用户导入一个keydepot配置?我看到你在使用Postgres作为Keyclope服务器,也许我们可以使用默认的内存数据库进行测试?
https://keycloak:8443/
IDENTITY_SERVER_URL=https://keycloak:8443/auth/realms/myrealm