Skip to main content
Skip to content

認証

GitHub Copilot SDK では、さまざまなユース ケースに合わせて複数の認証方法がサポートされています。 デプロイ シナリオに最も適した方法を選択します。

認証方法

Methodユースケース(事例)Copilot サブスクリプションが必要です
GitHubサインインユーザーユーザーがGitHubを使用してサインインする対話型アプリはい
GitHub OAuth アプリOAuth を介してユーザーに代わって動作するアプリはい
環境変数CI/CD, 自動化, サーバー間はい
サーバー間認証組織に起因する自動化と直接組織の課金ユーザー サブスクリプションなし。組織ポリシーが必要
BYOK (独自のキーを持ち込む)独自の API キーの使用 (Microsoft Foundry、OpenAI など)いいえ

GitHub サインイン ユーザー

これは、Copilot CLI を対話形式で実行するときの既定の認証方法です。 ユーザーは OAuth デバイス フロー GitHub使用して認証を行い、SDK は保存された資格情報を使用します。

しくみ:

  1. ユーザーは copilot CLI を実行し、GitHub OAuth 経由でサインインします
  2. 資格情報はシステム キーチェーンに安全に格納されます
  3. SDK では、保存されている資格情報が自動的に使用されます

SDK の構成:

コード言語 navigation

.NET
using GitHub.Copilot;

// Default: uses logged-in user credentials
await using CopilotClient client = new();

使用するタイミング:

  • ユーザーが直接対話するデスクトップ アプリケーション
  • 開発環境とテスト環境
  • ユーザーが対話形式でサインインできるシナリオ

GitHub OAuth アプリ

OAuth GitHub アプリを使用して、アプリケーションを通じてユーザーを認証し、その資格情報を SDK に渡します。 これにより、アプリケーションは、アプリを承認するユーザーに代わって、Copilot API 要求を行うことができます。

しくみ:

  1. ユーザーが OAuth GitHub アプリを承認する
  2. アプリがユーザー アクセス トークン (gho_ または ghu_ プレフィックス) を受け取る
  3. クライアント構成を使用してトークンを SDK に渡す

SDK の構成:

コード言語 navigation

.NET
using GitHub.Copilot;

await using var client = new CopilotClient(new CopilotClientOptions
{
    GitHubToken = userAccessToken,     // Token from OAuth flow
    UseLoggedInUser = false,           // Don't use stored CLI credentials
});

サポートされているトークンの種類:

  • gho_ - OAuth ユーザー アクセス トークン
  • ghu_ - GitHub App のユーザー アクセス トークン
  • github_pat_ - きめ細かい個人用アクセス トークン

サポート対象外:

  • ghp_ - 従来の個人用アクセス トークン (非推奨)

使用するタイミング:

  • ユーザーが GitHub 経由でサインインする Web アプリケーション
  • Copilot上に構築された SaaS アプリケーション
  • 異なるユーザーに代わって要求を行う必要があるマルチユーザー アプリケーション

詳細については、「GitHub OAuth のセットアップ」を参照してください。

セッション スコープのGitHub トークンのローテーション

マルチユーザー サービスと統合の場合は、有効期間の長いトークンを 1 つ格納するのではなく、各セッションにトークン プロバイダーを設定します。 ランタイムは、有効なGitHub ホストのプロバイダーを呼び出し、要求をinitialまたはrefreshとして識別します。 セッション ID は、クラウド セッションがまだ ID を受け取っていない場合にのみ存在しません。

タグ付けされたトークンの結果または明示的なキャンセルを返します。 すべてのトークンの結果には、コールバックが完了したときの残りの正の秒数という expiresInが含まれている必要があります。 運用GitHubトークンは通常 8 時間続くので、8 * 60 * 60は一般的な値です。 静的セッションごとのトークンとプロバイダーの両方を設定しないでください。

コード言語 navigation

TypeScript
const session = await client.createSession({
    gitHubTokenProvider: async ({ host, sessionId, reason }) => {
        const token = await acquireGitHubToken({ host, sessionId, reason });
        return {
            kind: "token",
            accessToken: token.value,
            expiresIn: token.secondsRemaining,
        };
    },
});

ランタイムは、セッションの作成または再開の一環として、 initial の取得を実行します。 取り消された取得、プロバイダー エラー、無効な応答、または安定したアカウント ID を持たないトークンは、作成操作または再開操作を拒否します。 ランタイムはアンビエント認証にフォールバックしません。

セッションが確立されると、ランタイムは資格情報を使用する各操作の前に非同期プレフライトを実行します。 現在のトークンの残りが 1 時間以下の場合は、 refresh を要求します。 アイドル状態のセッションは、次に認証情報を必要とする操作が実行されるまで更新されません。 ランタイムでは、このコールバックにバックグラウンド タイマー、拒否ドリブン 再生、401/403 チャレンジ伝達、アップスコープは使用されません。

環境変数

自動化、CI/CD パイプライン、およびサーバー間のシナリオでは、環境変数を使用して認証できます。

ユーザーの個人用アクセス トークンを使用しない組織属性の自動化については、 サーバー間認証 を参照してください。

サポートされている環境変数 (優先度順):

  1. COPILOT_GITHUB_TOKEN - Copilot を明示的に使用する場合に推奨
  2. GH_TOKEN - GitHub CLI互換
  3. GITHUB_TOKEN - GitHub Actions に対応

しくみ:

  1. サポートされている環境変数の 1 つを有効なトークンで設定する
  2. SDK はトークンを自動的に検出して使用します

SDK の構成:

コードの変更は必要ありません。SDK は環境変数を自動的に検出します。

コード言語 navigation

.NET
using GitHub.Copilot;

// Token is read from environment variable automatically
await using CopilotClient client = new();

使用するタイミング:

  • CI/CD パイプライン (GitHub Actions、Jenkins など)
  • 自動テスト
  • サービス アカウントを持つサーバー側アプリケーション
  • 対話型ログインを使用しない場合の開発

BYOK (独自のキーを持ち込む)

BYOK を使用すると、Microsoft Foundry、OpenAI、Anthropicなどのモデル プロバイダーから独自の API キーを使用できます。 これにより、GitHub Copilot認証が完全にバイパスされます。

主な利点:

  • GitHub Copilot サブスクリプションは必要ありません
  • エンタープライズ モデルのデプロイを使用する
  • モデルプロバイダーへの直接請求
  • Microsoft Foundry、OpenAI、Anthropic、および OpenAI 互換エンドポイントのサポート

次のような詳細については、 BYOK (独自のキーを持ち込む) を参照してください。

  • Microsoft Foundry のセットアップ
  • プロバイダー構成オプション
  • 制限事項と考慮事項
  • 完全なコード例

認証の優先順位

複数の認証方法を使用できる場合、SDK では次の優先順位で使用されます。

  1. 明示的な gitHubToken - SDK クライアントまたはセッション構成に直接渡されるトークン
  2. ダイレクト API トークン - GITHUB_COPILOT_API_TOKEN with COPILOT_API_URL
  3. 環境変数トークン - COPILOT_GITHUB_TOKEN → GH_TOKEN → GITHUB_TOKEN
  4. 保存された OAuth 資格情報 - 以前の copilot CLI ログインから
  5. GitHub CLI - gh auth 資格情報

マルチユーザー サーバー モードの場合は、セッションごとに gitHubToken を渡して、各セッションが正しいGitHub ID で実行されるようにします。マルチテナントとサーバーの展開 を参照してください。

自動ログインの無効化

SDK が保存された認証情報または gh CLI 認証を自動的に使用しないようにするには、ログイン済みユーザーへのフォールバックを無効にするように構成します。

コード言語 navigation

.NET
await using var client = new CopilotClient(new CopilotClientOptions
{
    UseLoggedInUser = false,  // Only use explicit tokens
});

次のステップ