具有查找映射方法的Openshift开放ID身份提供程序

具有查找映射方法的Openshift开放ID身份提供程序,openshift,auth0,openshift-origin,Openshift,Auth0,Openshift Origin,我正在使用OpenIDIdentityProvider和mappingMethod:claim对Openshift管理控制台中的管理员用户进行身份验证。我正在使用auth0服务对用户进行身份验证。管理员用户在部署时的ansible playbook中定义,有效地使管理员用户硬编码 是否可以使用OpenIDIdentityProvider,一种查找映射方法,并添加类似外部作用域:[roles]的内容来将其他授权角色拉入身份验证请求,从而完全管理所有管理员和开发人员用户?这将使我能够完全独立于ans

我正在使用
OpenIDIdentityProvider
mappingMethod:claim
对Openshift管理控制台中的管理员用户进行身份验证。我正在使用auth0服务对用户进行身份验证。管理员用户在部署时的ansible playbook中定义,有效地使管理员用户硬编码

是否可以使用
OpenIDIdentityProvider
,一种
查找
映射方法,并添加类似
外部作用域:[roles]
的内容来将其他授权角色拉入身份验证请求,从而完全管理所有管理员和开发人员用户?这将使我能够完全独立于ansible剧本管理用户和角色在身份验证提供商端管理权限的下一级奖励积分。

Openshift文档非常详细地介绍了默认
mappingMethod:claim
之外的身份验证/授权

下面是我的基于声明的映射方法的标识提供程序json文件:

{
  "items": [
    {
      "name": "auth0",
      "challenge": false,
      "login": true,
      "mappingMethod": "claim",
      "kind": "OpenIDIdentityProvider",
      "clientID": "supersecretsauce",
      "clientSecret": "extrasupersecretsauce",
      "extraScopes": ["email", "profile"],
      "claims": {
        "id": [
          "email"
        ],
        "preferredUsername": [
          "email"
        ],
        "name": [
          "name"
        ],
        "email": [
          "email"
        ]
      },
      "urls": {
        "authorize": "https://fancypants.auth0.com/authorize",
        "token": "https://fancypants.auth0.com/oauth/token",
        "userInfo": "https://fancypants.auth0.com/userinfo"
      }
    }
  ]
}
简单地说,以下内容足以满足基于查找的映射方法的工作,该方法具有身份验证提供程序返回的角色:

{
  "items": [
    {
      "name": "auth0",
      "challenge": false,
      "login": true,
      "mappingMethod": "lookup",
      "kind": "OpenIDIdentityProvider",
      "clientID": "supersecretsauce",
      "clientSecret": "extrasupersecretsauce",
      "extraScopes": ["email", "profile", "roles"],
      "claims": {
        "id": [
          "email"
        ],
        "preferredUsername": [
          "email"
        ],
        "name": [
          "name"
        ],
        "email": [
          "email"
        ],
        "role": [
          "roles"
        ]
      },
      "urls": {
        "authorize": "https://fancypants.auth0.com/authorize",
        "token": "https://fancypants.auth0.com/oauth/token",
        "userInfo": "https://fancypants.auth0.com/userinfo"
      }
    }
  ]
}

功能角色值的一个示例是
群集管理

OpenID只能用于身份验证。您正试图将其用于身份验证和授权。这是不可能的,因为角色和绑定由Openshift管理-它们不能委托给外部服务。

感谢您的反馈,当我在Brown1偶然发现此功能请求时,我收集了同样多的信息,该卡仍然只处理身份验证(组成员资格)。您仍然需要将角色绑定到Openshift中的组。因此,Openshift目前无法接受身份验证令牌中返回的角色?例如,如果令牌包含命名为与openshift中的角色和组匹配的角色和组,openshift将不接受这些角色和组。因为这就是目的,所以请使用openshift中已经定义的角色和组,将它们添加到auth网关端的用户,并使用令牌返回这些角色和组。@Brown1令牌可以声明您的身份和组成员身份(但不能声明角色)。该卡的目的是使身份提供者能够提供组信息(此时仅提供身份信息)。一旦实现,您就可以将想要的角色绑定到各个组,并让auth0断言组成员身份。如果您想绕过这一限制,您可以创建组(通过一些脚本)以1:1的比例映射角色(这样组
admin
将绑定到
admin
角色)。这将允许您在本质上断言角色。