keycloak 看门人不会阻止任何请求

标签 keycloak keycloak-gatekeeper louketo-proxy

我正在尝试在个人 api 中使用 keycloak + keycloak-gatekeeper 进行授权:api.mydomain.com .到目前为止,我已经完成了:

  • 创建了一个境界 MY-REALM在keycloak中,keycloak的URL是https://auth.mydomain.com
  • 创建了一个 confidential clientAuthorization Enabled 在同一领域开启 Valid redirect URIS :https://api.mydomain.com/ *
  • 创建用户
  • 在我的服务器内 https://api.mydomain.com指向 127.0.0.1:5000
  • 127.0.0.1:5001 是“真正的 API”
  • 使用此 config.yaml 配置 keycloak-gatekeeper:
  • client-id: <MY-API-CLIENT-ID>
    client-secret: <SECRET>
    discovery-url: https://auth.mydomain.com/auth/realms/<MY-REALM>
    enable-default-deny: true
    listen: 127.0.0.1:5000
    upstream-url: http://127.0.0.1:5001
    verbose: true
    enable-logging: true
    enable-security-filter: true
    enable-json-logging: true
    

    现在,如果我在浏览器中访问 https://api.mydomain.com我被重定向到 https://auth.mydomain.com要求用户和密码。我提供了在第 3 点创建的用户,并按预期再次重定向到 https://api.mydomain.com .到目前为止,一切都很好。

    问题在于Authorization部分的配置:
    在 key 斗篷中 -> Clients -> <MY-API-CLIENT-ID> -> Authorization -> Resources我将默认策略编辑为 拒绝 resource 中的每个请求/* 但我可以访问 https://api.mydomain.com 中的每个资源(URL)就像以前一样。

    我试过了:
  • 按领域角色限制(只有管理员可以访问特定资源)。
  • 按范围限制。
  • 否定策略中的逻辑。
  • 受客户角色限制。
  • 祈祷。
  • 哭。

  • 当然,我已经在 Evaluate 中尝试了上述所有组合。选择 keycloak 并在此处有效地模拟策略显示 拒绝 .

    那么我做错了什么?顺便说一下,在每次请求之后,这是来自 keycloak-gatekeeper 的日志:
    {"level":"debug","ts":1554936731.4022436,"caller":"keycloak-gatekeeper/middleware.go:337","msg":"access permitted to resource","access":"permitted","email":"testmail@mail.com","expires":201.59779997,"resource":"/*"}
    

    任何想法将不胜感激。

    最佳答案

    网守不使用 Keycloak -> Clients -> <MY-API-CLIENT-ID> -> Authorization -> Resources .

    它有自己的资源配置,例如:

    resources:
    - uri: /admin/*
      methods:
      - GET
      roles:
      - openvpn:vpn-user
      - openvpn:commons-prod-vpn
    

    文件:https://www.keycloak.org/docs/latest/securing_apps/index.html#configuration-options

    关于keycloak 看门人不会阻止任何请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622843/

    相关文章:

    microservices - Apache APISIX 与 Keycloak 集成

    javascript - 如何伪造 keycloak 调用以用于本地开发?

    docker - 使用 Docker 时未加载 Keycloak SPI 提供程序和层

    hibernate - 如何在我的应用程序中集成或使用 KeyCloak 用户数据库?

    kubernetes - 如何使用 keycloak-gatekeeper 保护 Kibana 仪表板?

    openid-connect - 针对外部 OIDC 提供商进行身份验证时,Keycloak-Gatekeeper 不会填充角色或组

    keycloak - keycloak 网守中重定向 url 的目的是什么?