第 3 章 使用 GitHub 进行身份验证


使用 GitHub 或 GitHub Enterprise 验证用户:

3.1. 启用使用 GitHub 进行身份验证

要使用 GitHub 验证用户,请在 Red Hat Developer Hub 中启用 GitHub 身份验证供应商。

先决条件

流程

  1. 要允许 Developer Hub 使用 GitHub 进行身份验证,请创建一个 GitHub 应用程序。选择 GitHub 应用程序而不是使用精细的权限,可以更好地控制应用程序可访问的存储库,并使用简短令牌。

    1. 使用以下配置注册 GitHub 应用程序:

      • GitHub App name :输入用于标识 GitHub 应用程序的唯一名称,如 < Red Hat Developer Hub>- <GUID>
      • 主页 URL: 您的 Developer Hub URL: https:// &lt;my_developer_hub_url>.
      • 授权回调 URL :您的 Developer Hub 身份验证后端 URL: https:// &lt;my_developer_hub_url&gt; /api/auth/github/handler/frame.
      • Webhook URL: 您的 Developer Hub URL: https:// &lt;my_developer_hub_url>.
      • Webhook secret :提供强大的 secret。
      • 存储库权限

        • 启用对以下的只读访问权限

          • 管理
          • 提交状态
          • 内容
          • Dependabot 警报
          • 部署
          • 拉取请求
          • Webhook

            提示

            如果您计划使用 GitHub API 进行更改,请确保启用 Read 和 write 权限,而不是 只读

        • 根据您的需要切换其他权限。
      • 机构权限

        • 启用对 成员的只读访问权限
      • 对于 何处可以安装此 GitHub 应用程序?,请选择 only on this account
    2. General Clients secrets 部分中,点 Generate a new client secret
    3. General Private key 部分中,点 Generate a private key
    4. Install App 选项卡中,选择要安装 GitHub App 的帐户。
    5. 为下一步保存以下值:

      • App ID
      • 客户端 ID
      • 客户端 secret
      • 私钥
      • Webhook secret
  2. 要将 GitHub 凭证添加到 Developer Hub 中,请将以下键/值对添加到 Developer Hub secret 中:

    AUTH_GITHUB_APP_ID
    输入保存 的应用程序 ID
    AUTH_GITHUB_CLIENT_ID
    输入保存 的客户端 ID
    GITHUB_ORGANIZATION
    输入您的 GitHub 机构名称,如 ' <your_github_organization_name>'。
    GITHUB_ORG_URL
    输入 $GITHUB_HOST_DOMAIN/$GITHUB_ORGANIZATION
    GITHUB_CLIENT_SECRET
    输入保存 的客户端 Secret
    GITHUB_PRIVATE_KEY_FILE
    输入保存 的私钥
    GITHUB_WEBHOOK_URL
    输入您的 Developer Hub URL: https:// <my_developer_hub_url>
    GITHUB_WEBHOOK_SECRET
    输入保存的 Webhook secret
  3. 要设置 GitHub 身份验证供应商并在 Developer Hub 自定义配置中启用与 GitHub API 集成,请编辑自定义 Developer Hub ConfigMap,如 app-config-rhdh,并将以下行添加到 app-config-rhdh.yaml 内容:

    app-config-rhdh.yaml 片段带有强制字段,以启用使用 GitHub 进行身份验证

    auth:
      environment: production
      providers:
        github:
          production:
            clientId: ${AUTH_GITHUB_CLIENT_ID}
            clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
    integrations:
      github:
        - host: ${GITHUB_HOST_DOMAIN}
          apps:
            - appId: ${AUTH_GITHUB_APP_ID}
              clientId: ${AUTH_GITHUB_CLIENT_ID}
              clientSecret: ${GITHUB_CLIENT_SECRET}
              webhookUrl: ${GITHUB_WEBHOOK_URL}
              webhookSecret: ${GITHUB_WEBHOOK_SECRET}
              privateKey: |
                ${GITHUB_PRIVATE_KEY_FILE}
    signInPage: github

    环境:production
    将环境标记为 production,以在 Developer Hub 主页中隐藏 Guest 登录。
    clientId,clientSecret,host,appId,webhookUrl,webhookSecret,privateKey
    使用您在 GitHub 中创建并配置了 OpenShift 作为 secret 的 Developer Hub 应用程序信息。
    sigInPage: github
    将 GitHub 提供程序启用为默认登录提供程序。

    可选: 考虑添加以下可选字段:

    dangerouslyAllowSignInWithoutUserInCatalog: true

    要启用身份验证,而无需在 Developer Hub 软件目录中置备用户。

    警告

    使用 dangerouslyAllowSignInWithoutUserInCatalog 探索 Developer Hub 功能,但不要在生产环境中使用它。

    带有可选字段的 app-config-rhdh.yaml 片段来允许软件目录中不存在验证用户

    auth:
      environment: production
      providers:
        github:
          production:
            clientId: ${AUTH_GITHUB_CLIENT_ID}
            clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
    integrations:
      github:
        - host: ${GITHUB_HOST_DOMAIN}
          apps:
            - appId: ${AUTH_GITHUB_APP_ID}
              clientId: ${AUTH_GITHUB_CLIENT_ID}
              clientSecret: ${GITHUB_CLIENT_SECRET}
              webhookUrl: ${GITHUB_WEBHOOK_URL}
              webhookSecret: ${GITHUB_WEBHOOK_SECRET}
              privateKey: |
                ${GITHUB_PRIVATE_KEY_FILE}
    signInPage: github
    dangerouslyAllowSignInWithoutUserInCatalog: true

    callbackUrl

    GitHub 在启动 OAuth 流时使用的回调 URL,例如: < your_intermediate_service_url/handler >。当 Developer Hub 不是直接接收器时定义它,如当您为多个 Developer Hub 实例使用一个 OAuth 应用程序时。

    带有可选 enterpriseInstanceUrl 字段的 app-config-rhdh.yaml 片段

    auth:
      providers:
        github:
          production:
            callbackUrl: <your_intermediate_service_url/handler>

    提示

    要启用与不同身份验证供应商的 GitHub 集成,请完成以下配置:

    • 将 GitHub 提供程序添加到现有 auth 部分。
    • 保留您的身份验证提供程序配置中 signInPage 部分。

    带有强制字段的 app-config-rhdh.yaml 片段启用 GitHub 集成并使用不同的身份验证供应商

    auth:
      environment: production
      providers:
        github:
          production:
            clientId: ${AUTH_GITHUB_CLIENT_ID}
            clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
        <your_other_authentication_providers_configuration>
    integrations:
      github:
        - host: ${GITHUB_HOST_DOMAIN}
          apps:
            - appId: ${AUTH_GITHUB_APP_ID}
              clientId: ${AUTH_GITHUB_CLIENT_ID}
              clientSecret: ${GITHUB_CLIENT_SECRET}
              webhookUrl: ${GITHUB_WEBHOOK_URL}
              webhookSecret: ${GITHUB_WEBHOOK_SECRET}
              privateKey: |
                ${GITHUB_PRIVATE_KEY_FILE}
    signInPage: <your_main_authentication_provider>

验证

  1. 进入 Developer Hub 登录页面。
  2. 您的 Developer Hub 登录页面显示 使用 GitHub 的 Sign in,并且 Guest 用户登录被禁用。
  3. 使用 GitHub 登录。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.