如何解决配置 Fiware PEP 代理、Keyrock 和 Orion 上下文代理
我正在尝试集成 Keyrock 和 PEP 代理以确保对 Context broker 的访问,但我遇到了一些问题。
我想要实现的是,只有在 Keyrock 中注册的确定用户才能访问 Context broker。
我遵循了 Fiware 教程,但在那个开发场景中,有一个应用程序侦听在 Keyrock 中注册的端口 3000。但是,如果没有那个教程应用程序,我怎么能得到相同的结果呢?我不能在没有应用程序的情况下保护对 Context broker 的访问吗?
如果可能的话,提供一些帮助就好了。这里有我的 docker-compose 文件的相关部分:
keyrock:
image: fiware/idm:${KEYROCK_VERSION}
container_name: fiware-keyrock
hostname: keyrock
networks:
default:
ipv4_address: 172.18.1.5
depends_on:
- MysqL-db
ports:
- "${KEYROCK_PORT}:${KEYROCK_PORT}" # localhost:3005
- "${KEYROCK_HTTPS_PORT}:${KEYROCK_HTTPS_PORT}" # localhost:3443
environment:
- "DEBUG=idm:*"
- "IDM_DB_HOST=MysqL-db"
- "IDM_DB_PASS_FILE=/run/secrets/my_secret_data"
- "IDM_DB_USER=root"
- "IDM_PORT=${KEYROCK_PORT}"
- "IDM_HOST=http://localhost:${KEYROCK_PORT}"
- "IDM_HTTPS_ENABLED=${IDM_HTTPS_ENABLED}"
- "IDM_HTTPS_PORT=${KEYROCK_HTTPS_PORT}"
- "IDM_ADMIN_USER=admin"
- "IDM_ADMIN_EMAIL=admin@test.com"
- "IDM_ADMIN_PASS=1234"
secrets:
- my_secret_data
healthcheck:
interval: 5s
# Database
MysqL-db:
restart: always
image: MysqL:${MysqL_DB_VERSION}
hostname: MysqL-db
container_name: db-MysqL
expose:
- "${MysqL_DB_PORT}"
ports:
- "${MysqL_DB_PORT}:${MysqL_DB_PORT}"
networks:
default:
ipv4_address: 172.18.1.6
environment:
- "MysqL_ROOT_PASSWORD_FILE=/run/secrets/my_secret_data"
- "MysqL_ROOT_HOST=172.18.1.5" # Allow Keyrock to access this database
volumes:
- MysqL-db:/var/lib/MysqL
secrets:
- my_secret_data
orion-proxy:
image: fiware/pep-proxy
container_name: fiware-orion-proxy
hostname: orion-proxy
networks:
default:
ipv4_address: 172.18.1.10
depends_on:
- keyrock
ports:
- "1027:1027"
expose:
- "1027"
environment:
- PEP_PROXY_APP_HOST=orion
- PEP_PROXY_APP_PORT=1026
- PEP_PROXY_PORT=1027
- PEP_PROXY_IDM_HOST=keyrock
- PEP_PROXY_HTTPS_ENABLED=false
- PEP_PROXY_AUTH_ENABLED=false
- PEP_PROXY_IDM_SSL_ENABLED=false
- PEP_PROXY_IDM_PORT=3005
- PEP_PROXY_APP_ID= <Obtained in Keyrock>
- PEP_PROXY_USERNAME= <Obtained in Keyrock>
- PEP_PASSWORD= <Obtained in Keyrock>
- PEP_PROXY_PDP=idm
- PEP_PROXY_MAGIC_KEY=1234
为了测试它,我使用 PEP 代理注册了一个带有 URL localhost:1026
(orion 上下文代理 URL)的测试应用程序(从中我得到了 PEP_PROXY_APP_ID
、PEP_PROXY_USERNAME
和 {{ 1}}).
当我运行 docker 容器时,它可以工作,但是当我尝试使用此 bash 获取访问令牌时出现问题(将 PEP_PASSWORD
和 CLIENT_ID
更改为在 OAuth2 字段中获得的那些应用程序和 CLIENT_SECRET
到 https://idm/oauth2/token
) 与管理员凭据。
我收到 http://localhost:3005/oauth2/token
错误。
如果您需要查看更多文件,请询问我。
解决方法
关于第一个问题,是的,必须创建一个 Keyrock 的应用程序来保护 Orion。您还必须在应用程序中创建一些角色和权限,并将它们分配给您想要的用户。查看有关 roles and permissions
的 FIWARE 教程关于“客户端无效错误”,我猜在解析 JSON 文件中的凭据时 bash 脚本中出现了问题。我已经测试了在 bash 脚本中对客户端 ID、客户端密码和用户名/密码进行硬编码,并且 Keyrock 成功创建了令牌(同时检查访问令牌显示,因为 Keyrock 的响应是一个 JSON)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。