×

OpenShift Container Platform 默认创建了多个 OAuth 客户端。您也可以注册和配置额外的 OAuth 客户端。

默认 OAuth 客户端

启动 OpenShift Container Platform API 时会自动创建以下 OAuth 客户端

OAuth 客户端 用途

openshift-browser-client

使用能够处理交互式登录的用户代理,在<namespace_route>/oauth/token/request请求令牌。[1]

openshift-challenging-client

使用能够处理WWW-Authenticate挑战的用户代理请求令牌。

openshift-cli-client

使用本地 HTTP 服务器获取授权码授权来请求令牌。

  1. <namespace_route> 指的是命名空间路由。可以通过运行以下命令找到:

    $ oc get route oauth-openshift -n openshift-authentication -o json | jq .spec.host

注册额外的 OAuth 客户端

如果您需要额外的 OAuth 客户端来管理 OpenShift Container Platform 集群的身份验证,您可以注册一个。

步骤
  • 注册额外的 OAuth 客户端:

    $ oc create -f <(echo '
    kind: OAuthClient
    apiVersion: oauth.openshift.io/v1
    metadata:
     name: demo (1)
    secret: "..." (2)
    redirectURIs:
     - "http://www.example.com/" (3)
    grantMethod: prompt (4)
    ')
    1 OAuth 客户端的name在向<namespace_route>/oauth/authorize<namespace_route>/oauth/token发出请求时用作client_id参数。
    2 secret在向<namespace_route>/oauth/token发出请求时用作client_secret参数。
    3 <namespace_route>/oauth/authorize<namespace_route>/oauth/token发出的请求中指定的redirect_uri参数必须等于或以redirectURIs参数值中列出的 URI 之一来作为前缀。
    4 grantMethod用于确定当此客户端请求令牌且尚未获得用户的访问权限时要采取的操作。指定auto自动批准授权并重试请求,或指定prompt提示用户批准或拒绝授权。

配置 OAuth 客户端的令牌非活动超时

您可以配置 OAuth 客户端,使其在设定的非活动时间段后令牌过期。默认情况下,不会设置令牌非活动超时。

如果在内部 OAuth 服务器配置中也配置了令牌非活动超时,则 OAuth 客户端中设置的超时将覆盖该值。

先决条件
  • 您可以作为具有cluster-admin角色的用户访问集群。

  • 您已配置身份提供商 (IDP)。

步骤
  • 更新OAuthClient配置以设置令牌非活动超时。

    1. 编辑OAuthClient对象

      $ oc edit oauthclient <oauth_client> (1)
      1 <oauth_client>替换为要配置的 OAuth 客户端,例如console

      添加accessTokenInactivityTimeoutSeconds字段并设置您的超时值

      apiVersion: oauth.openshift.io/v1
      grantMethod: auto
      kind: OAuthClient
      metadata:
      ...
      accessTokenInactivityTimeoutSeconds: 600 (1)
      1 允许的最小超时值(以秒为单位)是300
    2. 保存文件以应用更改。

验证
  1. 使用来自您的 IDP 的身份登录到集群。请务必使用您刚刚配置的 OAuth 客户端。

  2. 执行操作并验证其是否成功。

  3. 在不使用该身份的情况下等待超过配置的超时时间。在此步骤的示例中,等待超过 600 秒。

  4. 尝试从同一身份的会话执行操作。

    此尝试应失败,因为由于非活动时间超过配置的超时时间,令牌应已过期。