在 Docker 中使用 KeyCloak 设置集成测试环境



我正在尝试为使用KeyCloak保护的Web API项目之一设置集成测试环境。我的想法是创建 docker 撰写文件,其中连接所有必需的组件,然后尝试调用包含在内托管的 Web API 并验证响应。

下面是将 KeyCloak 和 Web API 连接在一起的 docker 组合文件的示例

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"

现在,当我在不同的容器中托管KeyCloak和Web API时,我无法使用本地主机从Web API容器访问KeyCloak,所以我需要使用 https://keycloak:18443/但是当我尝试并从KeyCloak获取例如.well-known/openid-configuration时,我收到连接被拒绝错误:

root@0e77e9623717:/应用# 卷曲 https://keycloak:18443/auth/realms/myrealm/.well-known/openid-configuration curl:(7( 无法连接到密钥衣端口 18443:连接被拒绝

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

如果有人对像我这样的情况有任何经验并且可以分享,那就太好了!

目前尚不清楚您是如何配置integration-test网络以及在哪里运行集成测试(主机、容器(以获得确切答案。

但我尝试。对于从主机访问钥匙斗篷:

https://<host IP or name>:18443/ 

integration-test网络中的容器:

https://keycloak:8443/

因此,请尝试配置test-web-api

IDENTITY_SERVER_URL=https://keycloak:8443/auth/realms/myrealm

并且您的test-web-API应该能够访问KeyCloak。

最新更新