Skip to main content

GitHub Copilot 拡張機能用に OIDC を設定する

Copilot Extension で OpenID Connect (OIDC) を設定してセキュリティを強化する方法について説明します。

はじめに

OIDC を設定すると、Copilot エージェントとスキルセットはユーザーをより安全に認証し、クラウド リソースへのアクセスをより安全に行えるようになります。 OIDC の詳細については、「Copilot 拡張機能の OpenID Connect (OIDC)」を参照してください。

拡張機能に合わせて OIDC を設定するには、3 つの手順があります。

トークン交換エンドポイントを構成する

RFC 8693 OAuth 2.0 Token Exchange に準拠するエンドポイントをサービス内に作成します。 このエンドポイントは次のことを行う必要があります。

  • 次のフォーム エンコード パラメーターを含む POST 要求を受け入れます。

    grant_type=urn:ietf:params:oauth:grant-type:token-exchange
    &resource=<https://your-service.com/resource>
    &subject_token=<github-jwt-token>
    &subject_token_type=urn:ietf:params:oauth:token-type:id_token
    
  • サービスのアクセス トークンを含む JSON 応答を返します。

    {
      "access_token": <"your-service-token">,
      "issued_token_type":"urn:ietf:params:oauth:token-type:access_token",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    
  • 検証が失敗した場合は、エラー応答を返します。

    {
      "error": "invalid_request"
    }
    

Copilot Extension の設定で OIDC を有効にする

Copilot Extension の構成で、OIDC を有効にします。

  1. GitHub の任意のページの右上隅にある、自分のプロファイル写真をクリックします。
  2. アカウント設定にアクセスしてください。
    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
  3. 左側のサイドバーで [ 開発者設定] をクリックします。
  4. 左側のサイドバーで、 [GitHub Apps] をクリックします。
  5. Copilot Extension に対して構成する GitHub App の右側にある [Edit] をクリックします。
  6. 左側のサイドバーで、[Copilot] をクリックします。
  7. [OpenID Connect Token Exchange] で、[Enabled] をオンにします。
  8. [Token exchange endpoint] フィールドに、トークン交換 URL を入力します。
  9. [Request header key] フィールドに、サービスのトークンのヘッダー キーを入力します。 既定値は、Authorization です。
  10. [Request header value] フィールドに、ヘッダー値の形式を入力します。 既定値は、Bearer ${token} です。

OIDC トークンを検証する

トークン交換エンドポイントは、以下の手順に従って、GitHub OIDC トークンを検証する必要があります。

  1. https://github.com/login/oauth/.well-known/openid-configuration から JSON Web キー セット (JWKS) をフェッチします。
  2. トークンのシグネチャを確認します。
  3. 必要な要求を検証します。
    • aud: 対象ユーザー。 Copilot Extension のクライアント ID。
    • sub: 件名。 要求を行う GitHub ユーザー ID。 応答は、ユーザーがアクセス許可を持っているデータに限定されます。 ユーザーにアクセス許可がない場合は、400 Bad Request が表示されます。
    • iat: 発行時刻。 トークンが発行されたときのタイムスタンプ。 通常、これは過去のタイムスタンプですが、トークンが作成された正確な瞬間を表します。
    • nbf: 期間の開始時刻。 このタイムスタンプより前には、トークンが無効です。 これは過去のタイムスタンプである必要があります。
    • exp: 有効期限。 トークンの有効期限が切れたときのタイムスタンプ。 これは将来のタイムスタンプである必要があります。
    • act: アクター。 委任されたアクセスの実行エンティティ。 これは定数文字列である必要があります。

トラブルシューティング

次のセクションでは、Copilot Extension 用に OIDC を実装する際の一般的な問題とベスト プラクティスについて概要を説明します。

トークン検証エラー

  • 正しい JWKS エンドポイントを使っていることを確認します。
  • 必要な要求がすべて存在し、有効であることを確認します。
  • タイムスタンプ (iatnbfexp) が有効な範囲内にあることをチェックします。

トークン交換エラー

  • 無効なトークンの場合は HTTP 400 を返します。
  • 必要なアクセス許可がユーザーにない場合は、HTTP 403 を返します。
  • GitHub が 403 応答を受信した場合、新しいトークンを使って要求を再試行します。

パフォーマンスの問題

  • 効率的なトークン検証を実装して待機時間を最小限に抑えます。
  • 適切なトークンの有効期限を使います (推奨: 10 分以下)。
  • 高トラフィックの拡張機能の場合は、キャッシュの影響を考慮します。

参考資料

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy