第4章 GitHub での認証


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

4.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_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 とのインテグレーションを有効にするには、Developer Hub のカスタム config map (my-rhdh-app-config など) を編集し、app-config.yaml ファイルの内容に次の行を追加します。

    GitHub での認証を有効にするための必須フィールドを含む app-config.yaml ファイルのフラグメント

    auth:
      environment: production 
    1
    
      providers:
        github:
          production:
            clientId: ${AUTH_GITHUB_CLIENT_ID} 
    2
    
            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 
    3

    1
    環境を production としてマークし、Developer Hub のログインページでゲストログインオプションを無効にします。
    2
    Developer Hub のシークレットに設定されている GitHub 認証情報を適用します。
    3
    GitHub プロバイダーを Developer Hub サインインプロバイダーとして有効にします。
    1. オプション: 次のオプションフィールドを追加することを検討してください。

      callbackUrl

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

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

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

sessionDuration

ユーザーセッションの有効期間。期間を ms ライブラリー形式 ('24h'、'2 days' など)、ISO 期間形式、またはコード内で使用される "human duration" 形式で入力します。

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

auth:
  providers:
    github:
      production:
        sessionDuration: { hours: 24 }

signIn
resolvers
認証が成功したら、サインインするユーザーを、Developer Hub カタログ内の既存のユーザーに解決する必要があります。ユースケースに合わせて最適な形でユーザーを確実にマッチさせるために、特定のリゾルバーを設定することを検討してください。デフォルトのリゾルバー usernameMatchingUserEntityName をオーバーライドするには、リゾルバーのリストを入力します。

認証プロバイダーは、成功するまで各サインインリゾルバーを順番に試行します。どれも成功しない場合は失敗します。

警告

実稼働モードでは、ユーザーが確実にマッチするように、リゾルバーを 1 つだけ設定してください。

resolver

サインインリゾルバー名を入力します。利用可能なリゾルバーは次のとおりです。

  • usernameMatchingUserEntityName
  • preferredUsernameMatchingUserEntityName
  • emailMatchingUserEntityProfileEmail
dangerouslyAllowSignInWithoutUserInCatalog: true

Developer Hub ソフトウェアカタログのユーザープロビジョニング要件を回避するようにサインインリゾルバーを設定します。

警告

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

ソフトウェアカタログに存在しないユーザーのサインインを許可するオプションのフィールドを含む app-config.yaml ファイルのフラグメント

auth:
  environment: production
  providers:
    github:
      production:
        clientId: ${AUTH_GITHUB_CLIENT_ID}
        clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
        signIn:
          resolvers:
            - resolver: usernameMatchingUserEntityName
              dangerouslyAllowSignInWithoutUserInCatalog: true
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

ヒント

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

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

GitHub インテグレーションを有効にし、別の認証プロバイダーを使用するための必須フィールドを含む app-config.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 では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る