在Docker中使用KeyClope建立集成测试环境
我正在尝试为我们的一个Web API项目设置集成测试环境,该项目使用KeyClope进行保护。我的想法是创建docker compose文件,在其中连接所有必需的组件,然后尝试调用托管在contained中的Web API并验证响应 下面是docker compose文件的示例,它将Key斗篷和Web API连接在一起在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
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