繁体   English   中英

配置 Fiware PEP 代理、Keyrock 和 Orion 上下文代理

[英]Configuring Fiware PEP Proxy, Keyrock and Orion Context Broker

我正在尝试集成 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 代理(从中获得了PEP_PROXY_APP_IDPEP_PROXY_USERNAMEPEP_PASSWORD )注册了一个带有 URL localhost:1026 (orion 上下文代理 URL)的测试应用程序。

When I run the docker containers it works but the problem comes when I try to get an access token using this bash (changing CLIENT_ID and CLIENT_SECRET to those obtained in the OAuth2 field of the application and https://idm/oauth2/token to http://localhost:3005/oauth2/token )与管理员凭据。

我得到invalid_client: Invalid client: client is invalid错误。

如果您需要查看更多文件,请询问我。

关于第一个问题,是的,必须创建 Keyrock 的应用程序来保护 Orion。 您还必须在应用程序中创建一些角色和权限,并将它们分配给您想要的用户。 查看有关角色和权限的 FIWARE 教程

关于“客户端无效错误”,我猜在从 JSON 文件解析凭据时,bash 脚本出现了问题。 我已经在 bash 脚本中测试了对客户端 ID、客户端密码和用户名/密码的硬编码,并且 Keyrock 成功创建了令牌(还要检查访问令牌显示,因为 Keyrock 的响应是 JSON)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM