使用嵌套 ListClaimMappings 进行 HashiCorp Nomad OIDC 身份验证

使用嵌套 ListClaimMappings 进行 HashiCorp Nomad OIDC 身份验证

我已经设置了 HashiCorp Nomad 服务器,我想添加 OIDC 身份验证方法。我已经在 OIDC 提供商上做好了所有准备,并在 Nomad 服务器上添加了配置,但我似乎无法获得ListClaimMappings需要检查的角色

例如,我从 OIDC 提供商获得 JWT 响应:

{
  //****//,
  "resource_access": {
    "Nomad": {
      "roles": [
        "engineering"
      ]
    }
  },
  //****//,
  "groups": [
    "nomad_dev"
  ],
  //****//,
}

如果我尝试在 Nomad 中添加配置:

{
  "OIDCDiscoveryURL": "*****",
  "OIDCClientID": "Nomad",
  "OIDCClientSecret": "*****",
  "OIDCScopes": ["openid", "roles", "email"],
  "BoundAudiences": [],
  "AllowedRedirectURIs": ["****"],
  "ClaimMappings": {},
  "ListClaimMappings": {
    "groups": "groups"
  }
}

我能够nomad acl binding-rule create -auth-method=OIDC -bind-type=policy -bind-name=engineering -selector="nomad_dev in list.groups"使用策略添加并成功登录engineering

但是如果我想使用engineering角色resource_access.Nomad.rolesListClaimMappings使用 JSON 指针更改:

"ListClaimMappings": {
  "/resource_access/Nomad/roles": "roles"
}

绑定规则nomad acl binding-rule create -auth-method=OIDC -bind-type=policy -bind-name=engineering -selector="engineering in list.roles"好像不起作用。

我已经尝试过"resource_access.Nomad.roles": "roles",,"resource_access.*.roles": "roles"但似乎没有什么作用,除了group,该列表不是嵌套的。

我做错什么了吗?从 HashiCorp 文档来看,它们似乎可以使用 JSON 指针,但没有任何示例。

相关内容