使用 Apache 和 auth_openidc 模块匹配对象数组中的声明

问题描述 投票:0回答:1

我在 Rocky Linux 9 上使用 Apache HTTP Server 2.4.62 和 auth_openidc 模块 2.4.10。在 ID 令牌中,我们的 OpenID Connect 身份提供商返回一个

memberOf
声明,如下所示:

{
  "name": "...",
  "memberOf": {
    "elements": [
      {
        "type": 2,
        "integer": 0,
        "object": {
          "string": "PRD_SUPERVISOR"
        },
        "name": null,
        "expanded": false
      },
      {
        "type": 2,
        "integer": 0,
        "object": {
          "string": "UAT_OPERATOR"
        },
        "name": null,
        "expanded": false
      }
    ],
    "length": 2
  },
  "sn": "..."
}

在生产环境中,我只想对属于 PRD_SUPERVISOR、PRD_OPERATOR 或 PRD_ADMINISTRATOR 组的用户进行授权。 我尝试了以下配置指令:

Require claim memberOf.elements.object.string~(PRD_OPERATOR|PRD_SUPERVISOR|PRD_ADMINISTRATOR)

失败并显示无法匹配要求声明表达式“memberOf.elements.object.string~(PRD_OPERATOR|PRD_SUPERVISOR|PRD_ADMINISTRATOR)”。我猜这可能是由于

elements
是一个数组引起的。

mod_auth_openidc Wiki 中的 Authorization 页面提供了如何处理字符串数组的示例,但我可以找到如何处理像

elements
这样的对象数组。

apache mod-auth-openidc apache-http-server
1个回答
0
投票

https://github.com/OpenIDC/mod_auth_openidc/discussions/1286,同样的问题得到了答案:

这种类型的复杂表达式只有在编译时才可能 libjq 支持,请参阅 https://github.com/OpenIDC/mod_auth_openidc/wiki/Authorization#complex-expressions

© www.soinside.com 2019 - 2024. All rights reserved.