我已经设置了 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.roles
并ListClaimMappings
使用 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 指针,但没有任何示例。