第3章 GitHub での認証


GitHub または GitHub Enterprise でユーザーを認証する場合は、以下を行います。

3.1. GitHub での認証の有効化

GitHub を使用してユーザーを認証するには、Red Hat Developer Hub で GitHub 認証プロバイダーを有効にします。

前提条件

手順

  1. Developer Hub が GitHub で認証できるようにするには、GitHub アプリケーションを作成します。きめ細かな権限を使用し、アプリケーションがアクセスできるリポジトリーをより細かく制御して、有効期間の短いトークンを使用するには、OAuth アプリケーションではなく GitHub アプリケーションを選択します。

    1. 次の設定で GitHub アプリケーションを登録します

      • GitHub アプリケーション名: <Red Hat Developer Hub>-<GUID> など、GitHub アプリケーションを識別する一意の名前を入力します。
      • ホームページ URL: Developer Hub の URL: https://<my_developer_hub_url>
      • 認可コールバック URL: Developer Hub 認証バックエンド URL: https://<my_developer_hub_url>/api/auth/github/handler/frame
      • Webhook URL: Developer Hub の URL: https://<my_developer_hub_url>
      • Webhook シークレット: 強力なシークレットを提供します。
      • リポジトリー権限:

        • 次の項目に対する Read-only アクセスを有効にします。

          • 管理
          • コミットステータス
          • 内容
          • Dependabot アラート
          • デプロイメント
          • プルリクエスト
          • Webhook

            ヒント

            GitHub API を使用して変更を加える予定の場合は、Read-only ではなく、Read and write 権限が有効になっていることを確認してください。

        • 必要に応じて他の権限を切り替えます。
      • 組織の権限:

        • メンバー への Read-only アクセスを有効にします。
      • Where can this GitHub App be installed? で、Only on this account を選択します。
    2. General Clients secrets セクションで、Generate a new client secret をクリックします。
    3. General Private keys セクションで、Generate a private key をクリックします。
    4. Install App タブで、GitHub アプリケーションをインストールするアカウントを選択します。
    5. 次のステップのために以下の値を保存します。

      • アプリケーション ID
      • クライアント ID
      • クライアントシークレット
      • 秘密鍵
      • Webhook シークレット
  2. GitHub 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。

    AUTH_GITHUB_APP_ID
    保存した アプリケーション ID を入力します。
    AUTH_GITHUB_CLIENT_ID
    保存した クライアント ID を入力します。
    GITHUB_HOST_DOMAIN
    GitHub Enterprise を使用しない場合は、GitHub ホストドメイン (https://github.com) を入力します。
    GITHUB_ORGANIZATION
    `<your_github_organization_name>' などの GitHub 組織名を入力します。
    GITHUB_ORG_URL
    $GITHUB_HOST_DOMAIN/$GITHUB_ORGANIZATION を入力します。
    GITHUB_CLIENT_SECRET
    保存した クライアントシークレット を入力します。
    GITHUB_PRIVATE_KEY_FILE
    保存した 秘密鍵 を入力します。
    GITHUB_WEBHOOK_URL
    Developer Hub の URL を入力します (https://<my_developer_hub_url>)
    GITHUB_WEBHOOK_SECRET
    保存した Webhook シークレット を入力します。
  3. GitHub 認証プロバイダーを設定し、Developer Hub のカスタム設定で GitHub API とのインテグレーションを有効にするには、app-config-rhdh などのカスタム Developer Hub ConfigMap を編集し、app-config-rhdh.yaml コンテンツに次の行を追加します。

    GitHub での認証を有効にするための必須フィールドを含む 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

    environment: production
    環境を production としてマークすると、Developer Hub のホームページでゲストログインが非表示になります。
    clientId, clientSecret, host, appId, webhookUrl, webhookSecret, privateKey
    GitHub で作成し、OpenShift でシークレットとして設定した Developer Hub アプリケーション情報を使用します。
    sigInPage: github
    GitHub プロバイダーをデフォルトのサインインプロバイダーとして有効にします。

    オプション: 次のオプションフィールドを追加することを検討してください。

    dangerouslyAllowSignInWithoutUserInCatalog: true

    Developer Hub ソフトウェアカタログでユーザーをプロビジョニングする必要なく認証を有効にします。

    警告

    Developer Hub の機能を調べるには dangerouslyAllowSignInWithoutUserInCatalog を使用しますが、実稼働環境では使用しないでください。

    ソフトウェアカタログに存在しないユーザーを認証できるようにするオプションフィールドを含む 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

    OAuth フローを開始するときに GitHub が使用するコールバック URL (例: <your_intermediate_service_url/handler>)。多くの Developer Hub インスタンスに対して 1 つの OAuth アプリケーションを使用する場合など、Developer Hub が直接のレシーバーではない場合に定義します。

    オプションの enterpriseInstanceUrl フィールドを含む app-config-rhdh.yaml フラグメント

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

    enterpriseInstanceUrl

    GitHub Enterprise の URL。前のステップで GITHUB_HOST_DOMAIN シークレットを定義しておく必要があります。

    オプションの enterpriseInstanceUrl フィールドを含む app-config-rhdh.yaml フラグメント

    auth:
      providers:
        github:
          production:
            enterpriseInstanceUrl: ${GITHUB_HOST_DOMAIN}

    ヒント

    別の認証プロバイダーとの GitHub インテグレーションを有効にするには、次の設定を完了します。

    • GitHub プロバイダーを既存の auth セクションに追加します。
    • 認証プロバイダーの設定から signInPage セクションを保持します。

    GitHub インテグレーションを有効にし、別の認証プロバイダーを使用するための必須フィールドを含む、app-config-rhdh.yaml フラグメント

    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 のサインインページには Sign in using GitHub と表示され、ゲストユーザーのサインインは無効になっています。
  3. GitHub でログインします。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.