認証


Red Hat Developer Hub 1.2

Red Hat Developer Hub で外部サービスへの認証を設定する

Red Hat Customer Content Services

概要

Red Hat Developer Hub プラットフォームエンジニアは、組織の特定のニーズを満たすために他のユーザーの認証を管理できます。

はじめに

Red Hat Developer Hub 内の認証により、ユーザーのサインイン、識別、外部リソースへのアクセスが容易になります。複数の認証プロバイダーをサポートします。

認証プロバイダーは通常、次のように使用されます。

  • サインインと識別のための 1 つのプロバイダー。
  • 外部リソースにアクセスするための追加プロバイダー。

Red Hat Developer Hub は、次の認証プロバイダーをサポートしています。

Microsoft Azure
microsoft
GitHub
github
Keycloak
oidc

使用するプロバイダーごとに、専用の手順に従って次のタスクを完了してください。

  1. 認証プロバイダーと Red Hat Developer Hub が通信するために必要な共有シークレットを設定します。
  2. 認証プロバイダーを使用するように Red Hat Developer Hub を設定します。

第1章 Microsoft Azure 認証プロバイダーの有効化

Red Hat Developer Hub には、OAuth を使用してユーザーを認証できる Microsoft Azure 認証プロバイダーが組み込まれています。

手順

  1. Developer Hub が Microsoft Azure で認証できるようにするために、Microsoft Azure で OAuth アプリケーションを作成します。

    1. Azure Portal > App registrations に移動し、Developer Hub 用の App Registration を作成します。
    2. App registration の概要ページで、次の設定を含む新しい Web platform configuration を追加します。

      Redirect URI
      Developer Hub で設定されているバックエンド認証 URI (https://<APP_FQDN>/api/auth/microsoft/handler/frame) を入力します。
      Front-channel logout URL
      空白のままにします。
      Implicit grant and hybrid flows
      すべてのチェックボックスをオフのままにします。
    3. API permissions タブで Add Permission をクリックし、Microsoft Graph API に対して次の Delegated permission を追加します。

      • email
      • offline_access
      • openid
      • profile
      • User.Read
      • Microsoft Graph API のオプションのカスタムスコープ。この場所と、Developer Hub 設定 (app-config-rhdh.yaml) の両方で定義します。

        注記

        企業によっては、これらの権限に対して管理者の同意を与えることが必要な場合があります。管理者の同意が必要ない場合でも、管理者の同意を与える場合があります。そうすることで、ユーザーが初めて Backstage にアクセスするときに、個別に同意する必要がなくなるためです。管理者の同意を与えるには、ディレクトリー管理者が admin consent ページに移動し、Grant admin consent for COMPANY NAME をクリックする必要があります。

    4. Certificates & Secrets ページに移動し、Client secrets タブで新しいクライアントシークレットを作成します。次のステップのために Client secret を保存します。
  2. Developer Hub のシークレットに Microsoft Azure 認証情報を追加します。

    1. secrets-rhdh などの Developer Hub シークレットを編集します。
    2. 以下のキーと値のペアを追加します。

      • AUTH_AZURE_CLIENT_ID: Microsoft Azure で生成した Application ID を入力します。
      • AUTH_AZURE_CLIENT_SECRET: Microsoft Azure で生成した Client secret を入力します。
      • AUTH_AZURE_TENANT_ID: Microsoft Azure の Tenant ID を入力します。
  3. Developer Hub のカスタム設定で Microsoft Azure 認証プロバイダーを設定します。

    app-config-rhdh などのカスタム Developer Hub config map を編集します。

    app-config-rhdh.yaml コンテンツで、ルートの auth 設定の下に Microsoft プロバイダー設定を追加し、サインイン用に Microsoft プロバイダーを有効にします。

    app-config-rhdh.yaml の一部

    auth:
      environment: production
      providers:
        microsoft:
          production:
            clientId: ${AUTH_AZURE_CLIENT_ID}
            clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
            tenantId: ${AUTH_AZURE_TENANT_ID}
            # domainHint: ${AUTH_AZURE_TENANT_ID} 
    1
    
            # additionalScopes: 
    2
    
              # - Mail.Send
    signInPage: microsoft 
    3

    1
    シングルテナントアプリケーションの場合は任意です。他のテナントのアカウントを自動的に除外することで、複数のテナントにアカウントを持つユーザーのログインの手間を軽減できます。このパラメーターをシングルテナントアプリケーションで使用する場合は、コメントを解除してテナント ID を入力します。アプリケーション登録がマルチテナントの場合は、このパラメーターを空白のままにします。詳細は、Home Realm Discovery を参照してください。
    2
    追加のスコープの場合は任意です。アプリケーション登録のスコープを追加するには、コメントを解除して、追加するスコープのリストを入力します。デフォルトおよび必須の値は、['user.read'] です。
    3
    Microsoft Azure プロバイダーをデフォルトのサインインプロバイダーとして有効にします。
注記

ファイアウォールルールなどにより、発信アクセスが制限されている環境では任意です。環境で発信アクセスが制限されている場合は、Backstage バックエンドが次のホストにアクセスできることを確認してください。

  • login.microsoftonline.com: 認可コードとアクセストークンを取得および交換します。
  • graph.microsoft.com: ユーザープロファイル情報を取得します (こちらのソースコードを参照)。このホストにアクセスできない場合、ユーザーがログインしようとすると Authentication failed, failed to fetch user profile というエラーが表示されることがあります。

第2章 GitHub 認証プロバイダーを有効にする

Red Hat Developer Hub は、ビルトインの GitHub 認証プロバイダーを使用して、GitHub または GitHub Enterprise でユーザーを認証します。

2.1. GitHub アプリケーションの概要

GitHub アプリケーションは一般に、OAuth アプリケーションよりも推奨されます。これは、GitHub アプリケーションは詳細な権限を使用し、アプリケーションがアクセスできるリポジトリーをより詳細に制御し、有効期間の短いトークンを使用するためです。詳細は、GitHub ドキュメントの GitHub Apps overview を参照してください。

2.2. GitHub アプリケーションの登録

GitHub アプリケーションでは、そのアプリケーションの一部として許可されたスコープを設定します。そのため、プラグインが必要とするスコープを検証する必要があります。スコープ情報はプラグインの README ファイルで入手できます。

GitHub 認証を追加するには、GitHub Web サイトの Registering a GitHub App の手順を実行します。

次の例を使用して、実稼働環境に関する情報を Register new GitHub App ページの必須フィールドに入力します。

  • アプリケーション名: Red Hat Developer Hub
  • ホームページ URL: https://developer-hub-<NAMESPACE_NAME>.<KUBERNETES_ROUTE_HOST>
  • 認証コールバック URL: https://developer-hub-<NAMESPACE_NAME>.<KUBERNETES_ROUTE_HOST>/api/auth/github/handler/frame
注記

ホームページ URL は Developer Hub のフロントエンドを指し、認可コールバック URL は認証プロバイダーのバックエンドを指します。

2.3. Developer Hub での GitHub アプリケーションの設定

Developer Hub の GitHub 認証を追加するには、app-config.yaml ファイルで GitHub アプリケーションを設定する必要があります。

GitHub 認証プロバイダーは次の設定キーを使用します。

  • clientId: GitHub で生成したクライアント ID。例: b59241722e3c3b4816e2
  • clientSecret: 生成したクライアント ID に関連付けられたクライアントシークレット。
  • enterpriseInstanceUrl (オプション): GitHub Enterprise インスタンスのベース URL。たとえば、https://ghe.<company>.com です。enterpriseInstanceUrl は GitHub Enterprise にのみ必要です。
  • callbackUrl (オプション): OAuth フローを開始するときに GitHub が使用するコールバック URL。たとえば、https://your-intermediate-service.com/handler です。callbackUrl は、多数の Developer Hub インスタンスに対して 1 つの OAuth アプリケーションを使用する場合など、Developer Hub が直接の受信者ではない場合にのみ必要です。

GitHub アプリケーションを設定するには、ルート認証設定の下にある app-config.yaml ファイルにプロバイダー設定を追加します。以下に例を示します。

auth:
 environment: production
 providers:
   github:
     production:
       clientId: ${GITHUB_APP_CLIENT_ID}
       clientSecret: ${GITHUB_APP_CLIENT_SECRET}
       ## uncomment if using GitHub Enterprise
       # enterpriseInstanceUrl: ${GITHUB_URL}

2.4. GitHub プロバイダーの Developer Hub フロントエンドへの追加

プロバイダーをフロントエンドに追加するには、サインイン設定を app-config.yaml ファイルに追加します。以下に例を示します。

signInPage: github

関連情報

  • GitHub を使用した Backstage アクセスの認証は、コミュニティードキュメントの GitHub Authentication Provider を参照してください。
  • Backstage フロントエンドにプロバイダーを追加する方法は、コミュニティードキュメントの Enabling authentication in Showcase を参照してください。

第3章 OpenID Connect 認証プロバイダーを有効にする

Red Hat Developer Hub は、OpenID Connect (OIDC) 認証プロバイダーを使用して、OIDC プロトコルをサポートするサードパーティーのサービスで認証します。

3.1. Developer Hub での OIDC 認証プロバイダーの使用に関する概要

ルート認証設定の下にある app-config.yaml ファイルを更新することにより、Developer Hub で OIDC 認証プロバイダーを設定できます。以下に例を示します。

auth:
  environment: production
  # Providing an auth.session.secret will enable session support in the auth-backend
  session:
    secret: ${SESSION_SECRET}
  providers:
    oidc:
      production:
        metadataUrl: ${AUTH_OIDC_METADATA_URL}
        clientId: ${AUTH_OIDC_CLIENT_ID}
        clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
        prompt: ${AUTH_OIDC_PROMPT} # Recommended to use auto
        ## Uncomment for additional configuration options
        # callbackUrl: ${AUTH_OIDC_CALLBACK_URL}
        # tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_METHOD}
        # tokenSignedResponseAlg: ${AUTH_OIDC_SIGNED_RESPONSE_ALG}
        # scope: ${AUTH_OIDC_SCOPE}
        ## Declarative resolvers to override the default resolver: `emailLocalPartMatchingUserEntityName`
        ## The authentication provider tries each sign-in resolver until it succeeds, and fails if none succeed. Uncomment the resolvers that you want to use.
        # signIn:
        #   resolvers:
        #     - resolver: preferredUsernameMatchingUserEntityName
        #     - resolver: emailMatchingUserEntityProfileEmail
        #     - resolver: emailLocalPartMatchingUserEntityName
signInPage: oidc

3.2. OIDC 認証プロバイダーを使用した Keycloak の設定

Red Hat Developer Hub には、Keycloak を使用してユーザーを認証できる OIDC 認証プロバイダーが含まれています。

重要

Keycloak で作成したユーザーは、Developer Hub カタログでも使用可能である必要があります。

手順

  1. Keycloak で、RHDH などの新しいレルムを作成します。
  2. 新しいユーザーを追加します。

    ユーザー名
    ユーザーのユーザー名。例: rhdhuser
    メール
    ユーザーのメールアドレス。
    ユーザーの名。
    ユーザーの姓。
    メールの確認
    On に切り替えます。
  3. Create をクリックします。
  4. Credentials タブに移動します。
  5. Set password をクリックします。
  6. ユーザーアカウントの Password を入力し、TemporaryOff に切り替えます。
  7. 新しいクライアント ID (例: RHDH) を作成します。

    クライアント認証
    On に切り替えます。
    有効なリダイレクト URI
    OIDC ハンドラー URL に設定します (例: https://<RHDH_URL>/api/auth/oidc/handler/frame)
  8. Credentials タブに移動し、Client secret をコピーします。
  9. 次のステップのために、クライアント ID とクライアントシークレットを保存します。
  10. Developer Hub で、Developer Hub シークレットに Keycloak 認証情報を追加します。

    1. secrets-rhdh などの Developer Hub シークレットを編集します。
    2. 以下のキーと値のペアを追加します。

      AUTH_KEYCLOAK_CLIENT_ID
      Keycloak で生成したクライアント ID (RHDH など) を入力します。
      AUTH_KEYCLOAK_CLIENT_SECRET
      Keycloak で生成したクライアントシークレットを入力します。
  11. Developer Hub のカスタム設定で OIDC 認証プロバイダーを設定します。

    1. app-config-rhdh などのカスタム Developer Hub ConfigMap を編集します。
    2. app-config-rhdh.yaml コンテンツで、ルート auth 設定の下に oidc プロバイダー設定を追加し、サインイン用に oidc プロバイダーを有効にします。

      app-config-rhdh.yaml の一部

      auth:
        environment: production
        providers:
          oidc:
            production:
            clientId: ${AUTH_KEYCLOAK_CLIENT_ID}
            clientSecret: ${AUTH_KEYCLOAK_CLIENT_SECRET}
            metadataUrl: ${KEYCLOAK_BASE_URL}/auth/realms/${KEYCLOAK_REALM}
            prompt: ${KEYCLOAK_PROMPT} # recommended to use auto
             Uncomment for additional configuration options #callbackUrl: ${KEYCLOAK_CALLBACK_URL} #tokenEndpointAuthMethod: ${KEYCLOAK_TOKEN_ENDPOINT_METHOD} #tokenSignedResponseAlg: ${KEYCLOAK_SIGNED_RESPONSE_ALG} #scope: ${KEYCLOAK_SCOPE}  If you are using the keycloak-backend plugin, use the preferredUsernameMatchingUserEntityName resolver to avoid a login error.
            signIn:
              resolvers:
                - resolver: preferredUsernameMatchingUserEntityName
      signInPage: oidc

検証

  1. backstage-developer-hub アプリケーションを再起動して変更を適用します。
  2. Developer Hub のサインインページに、Sign in using OIDC と表示されます。

3.3. Developer Hub の Keycloak を使用した OAuth2 プロキシーから OIDC への移行

Keycloak で認証プロバイダーとして OAuth2 Proxy を使用しており、OIDC に移行する場合は、認証プロバイダーの設定を更新して OIDC を使用できます。

手順

  1. Keycloak で、有効なリダイレクト URI を https://<rhdh_url>/api/auth/oidc/handler/frame に更新します。<rhdh_url> は、my.rhdh.example.com などの Developer Hub アプリケーションの URL に置き換えてください。
  2. app-config.yaml ファイルの auth セクションにある oauth2Proxy 設定値を oidc 設定値に置き換えます。
  3. signInPage 設定値を oauth2Proxy から oidc に更新します。

    次の例は、認証プロバイダーを oidc に移行する前の oauth2Proxyauth.providers および signInPage 設定を示しています。

    auth:
      environment: production
      session:
        secret: ${SESSION_SECRET}
      providers:
        oauth2Proxy: {}
    signInPage: oauth2Proxy

    次の例は、認証プロバイダーを oidc に移行した後の auth.providers および signInPage 設定を示しています。

    auth:
      environment: production
      session:
        secret: ${SESSION_SECRET}
      providers:
        oidc:
          production:
            metadataUrl: ${KEYCLOAK_METADATA_URL}
            clientId: ${KEYCLOAK_CLIENT_ID}
            clientSecret: ${KEYCLOAK_CLIENT_SECRET}
            prompt: ${KEYCLOAK_PROMPT} # recommended to use auto
    signInPage: oidc
  4. OAuth2 プロキシーサイドカーコンテナーを削除し、Helm チャートの values.yaml ファイルの upstream.service セクションを次のように更新します。

    • service.ports.backend: 7007
    • service.ports.targetPort: backend

      次の例は、認証プロバイダーを oidc に移行する前の oauth2Proxyservice 設定を示しています。

      service:
        ports:
          name: http-backend
          backend: 4180
          targetPort: oauth2Proxy

      次の例は、認証プロバイダーを oidc に移行した後の service 設定を示しています。

      service:
        ports:
          name: http-backend
          backend: 7007
          targetPort: backend
  5. Developer Hub Helm チャートをアップグレードします。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る