第3章 GitHub での認証
GitHub または GitHub Enterprise でユーザーを認証する場合は、以下を行います。
3.1. GitHub での認証の有効化
GitHub を使用してユーザーを認証するには、Red Hat Developer Hub で GitHub 認証プロバイダーを有効にします。
前提条件
- カスタム Developer Hub アプリケーション設定を追加 している。また、それを変更するための十分な権限を持っている。
- GitHub アプリケーション を作成および管理するのに十分な権限が GitHub にある。
手順
Developer Hub が GitHub で認証できるようにするには、GitHub アプリケーションを作成します。きめ細かな権限を使用し、アプリケーションがアクセスできるリポジトリーをより細かく制御して、有効期間の短いトークンを使用するには、OAuth アプリケーションではなく GitHub アプリケーションを選択します。
次の設定で 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
を選択します。
-
General
Clients secrets セクションで、Generate a new client secret をクリックします。 -
General
Private keys セクションで、Generate a private key をクリックします。 - Install App タブで、GitHub アプリケーションをインストールするアカウントを選択します。
次のステップのために以下の値を保存します。
- アプリケーション ID
- クライアント ID
- クライアントシークレット
- 秘密鍵
- Webhook シークレット
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 シークレット を入力します。
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>
検証
- Developer Hub のログインページに移動します。
- Developer Hub のサインインページには Sign in using GitHub と表示され、ゲストユーザーのサインインは無効になっています。
- GitHub でログインします。