3.4. Red Hat Developer Hub の認証プロバイダーとして Amazon Cognito を使用する


Amazon Cognito は、Developer Hub に認証層を追加するための AWS サービスです。ユーザープールを使用して Developer Hub に直接サインインすることも、サードパーティーのアイデンティティープロバイダーを介してフェデレーションすることもできます。

Amazon Cognito は、Developer Hub のコア認証プロバイダーには含まれませんが、汎用の OpenID Connect (OIDC) プロバイダーを使用して統合できます。

Helm Chart と Operator がサポートするデプロイメントの両方で Developer Hub を設定できます。

前提条件

  • ユーザープールがあるか、新しいユーザープールを作成した。ユーザープールの詳細は、Amazon Cognito user pools ドキュメントを参照してください。

    注記

    ユーザープールが配置されている AWS リージョンとユーザープール ID を必ず書き留めてください。

  • ホストされた UI を統合するために、ユーザープール内にアプリケーションクライアントを作成した。詳細は、Setting up the hosted UI with the Amazon Cognito console を参照してください。

    Amazon Cognito コンソールを使用してホストされた UI をセットアップするときは、必ず次の調整を行ってください。

    1. Allowed callback URL(s) セクションに、URL https://<rhdh_url>/api/auth/oidc/handler/frame を含めます。<rhdh_url> は Developer Hub アプリケーションの URL (my.rhdh.example.com など) に置き換えてください。
    2. 同様に、Allowed sign-out URL(s) セクションに https://<rhdh_url> を追加します。<rhdh_url> は Developer Hub アプリケーションの URL (my.rhdh.example.com など) に置き換えます。
    3. OAuth 2.0 grant types で、Authorization code grant を選択して認証コードを返します。
    4. OpenID Connect scopes で、少なくとも次のスコープを選択してください。

      • OpenID
      • プロファイル
      • メール
    Helm のデプロイメント

    手順

    1. 次のようにして、カスタム app-config-rhdh ConfigMap を編集または作成します。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: app-config-rhdh
      data:
        "app-config-rhdh.yaml": |
          # --- Truncated ---
          app:
            title: Red Hat Developer Hub
      
          signInPage: oidc
          auth:
            environment: production
            session:
              secret: ${AUTH_SESSION_SECRET}
            providers:
              oidc:
                production:
                  clientId: ${AWS_COGNITO_APP_CLIENT_ID}
                  clientSecret: ${AWS_COGNITO_APP_CLIENT_SECRET}
                  metadataUrl: ${AWS_COGNITO_APP_METADATA_URL}
                  callbackUrl: ${AWS_COGNITO_APP_CALLBACK_URL}
                  scope: 'openid profile email'
                  prompt: auto
    2. 次のテンプレートを使用して、カスタム secrets-rhdh Secret を編集または作成します。

      apiVersion: v1
      kind: Secret
      metadata:
        name: secrets-rhdh
      stringData:
        AUTH_SESSION_SECRET: "my super auth session secret - change me!!!"
        AWS_COGNITO_APP_CLIENT_ID: "my-aws-cognito-app-client-id"
        AWS_COGNITO_APP_CLIENT_SECRET: "my-aws-cognito-app-client-secret"
        AWS_COGNITO_APP_METADATA_URL: "https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid-configuration"
        AWS_COGNITO_APP_CALLBACK_URL: "https://[rhdh_dns]/api/auth/oidc/handler/frame"
    3. values.yaml ファイルに、ConfigMap リソースと Secret リソースの両方の参照を追加します。

      upstream:
        backstage:
          image:
            pullSecrets:
            - rhdh-pull-secret
          podSecurityContext:
            fsGroup: 2000
          extraAppConfig:
            - filename: app-config-rhdh.yaml
              configMapRef: app-config-rhdh
          extraEnvVarsSecrets:
            - secrets-rhdh
    4. Helm デプロイメントをアップグレードします。

      helm upgrade rhdh \
        openshift-helm-charts/redhat-developer-hub \
        [--version 1.1.4] \
        --values /path/to/values.yaml
    Operator がサポートするデプロイメント
    1. 次のコードを app-config-rhdh ConfigMap に追加します。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: app-config-rhdh
      data:
        "app-config-rhdh.yaml": |
          # --- Truncated ---
      
          signInPage: oidc
          auth:
            # Production to disable guest user login
            environment: production
            # Providing an auth.session.secret is needed because the oidc provider requires session support.
            session:
              secret: ${AUTH_SESSION_SECRET}
            providers:
              oidc:
                production:
                  # See https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-oidc-provider/config.d.ts
                  clientId: ${AWS_COGNITO_APP_CLIENT_ID}
                  clientSecret: ${AWS_COGNITO_APP_CLIENT_SECRET}
                  metadataUrl: ${AWS_COGNITO_APP_METADATA_URL}
                  callbackUrl: ${AWS_COGNITO_APP_CALLBACK_URL}
                  # Minimal set of scopes needed. Feel free to add more if needed.
                  scope: 'openid profile email'
      
                  # Note that by default, this provider will use the 'none' prompt which assumes that your are already logged on in the IDP.
                  # You should set prompt to:
                  # - auto: will let the IDP decide if you need to log on or if you can skip login when you have an active SSO session
                  # - login: will force the IDP to always present a login form to the user
                  prompt: auto
    2. secrets-rhdh Secret に次のコードを追加します。

      apiVersion: v1
      kind: Secret
      metadata:
        name: secrets-rhdh
      stringData:
        # --- Truncated ---
      
        # TODO: Change auth session secret.
        AUTH_SESSION_SECRET: "my super auth session secret - change me!!!"
      
        # TODO: user pool app client ID
        AWS_COGNITO_APP_CLIENT_ID: "my-aws-cognito-app-client-id"
      
        # TODO: user pool app client Secret
        AWS_COGNITO_APP_CLIENT_SECRET: "my-aws-cognito-app-client-secret"
      
        # TODO: Replace region and user pool ID
        AWS_COGNITO_APP_METADATA_URL: "https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid-configuration"
      
        # TODO: Replace <rhdh_dns>
        AWS_COGNITO_APP_CALLBACK_URL: "https://[rhdh_dns]/api/auth/oidc/handler/frame"
    3. カスタムリソースに app-config-rhdh ConfigMap と secrets-rhdh Secret の両方への参照が含まれていることを確認します。

      apiVersion: rhdh.redhat.com/v1alpha1
      kind: Backstage
      metadata:
       # TODO: this the name of your Developer Hub instance
        name: my-rhdh
      spec:
        application:
          imagePullSecrets:
          - "rhdh-pull-secret"
          route:
            enabled: false
          appConfig:
            configMaps:
              - name: "app-config-rhdh"
          extraEnvs:
            secrets:
              - name: "secrets-rhdh"
    4. オプション: カスタムリソースがサポートする既存の Developer Hub インスタンスがあり、それを編集していない場合は、Developer Hub デプロイメントを手動で削除し、Operator を使用して再作成できます。次のコマンドを実行して、Developer Hub デプロイメントを削除します。

      kubectl delete deployment -l app.kubernetes.io/instance=<CR_NAME>

検証

  1. Developer Hub の Web URL に移動し、OIDC 認証を使用してサインインします。これにより、設定した AWS Cognito ユーザープールを介して認証するよう求められます。
  2. ログインしたら、Settings にアクセスしてユーザーの詳細を確認します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る