Skip to main content

Copilot SDK를 사용하여 인증

배포 시나리오에 GitHub Copilot SDK 가장 적합한 인증 방법을 선택합니다.

누가 이 기능을 사용할 수 있나요?

GitHub Copilot SDK 는 모든 Copilot 계획에서 사용할 수 있습니다.

참고

          코필로트 SDK가 현재 공개 미리 보기에 있습니다. 기능 및 가용성은 변경될 수 있습니다.

인증 방법 개요

          GitHub Copilot SDK 는 다양한 사용 사례에 맞게 여러 인증 방법을 지원합니다.

| 메서드 | 사용 사례 | Copilot 구독 필요 | |--------|----------|-------------------------------| | GitHub 로그인 사용자 | 사용자가 GitHub로 로그인하는 대화형 앱 | 예 | | OAuth GitHub 앱 | OAuth를 통해 사용자를 대신하여 작동하는 앱 | 예 | | 환경 변수 | CI/CD, 자동화, 서버-서버 | 예 | | BYOK(사용자 고유의 키 가져오기) | 사용자 고유의 API 키 사용(Azure AI Foundry, OpenAI 등) | No |

GitHub 로그인 사용자

대화형으로 실행할 GitHub Copilot 명령 줄 인터페이스 (CLI) 때 기본 인증 방법입니다. GitHub Copilot CLI 인증을 참조하세요. 사용자는 OAuth 디바이스 흐름을 통해 GitHub 인증하고 SDK는 저장된 자격 증명을 사용합니다.

          **작동 방식:**
  1. 사용자는 CLI를 copilot 실행하고 OAuth를 통해 GitHub 로그인합니다.

  2. 자격 증명은 시스템 키 집합에 안전하게 저장됩니다.

  3. SDK는 저장된 자격 증명을 자동으로 사용합니다.

           **SDK 구성:**
    
import { CopilotClient } from "@github/copilot-sdk";

// Default: uses signed-in user credentials
const client = new CopilotClient();

다른 언어의 예제는 리포지토리의 인증github/copilot-sdk 참조하세요.

          **이 메서드를 사용하는 경우:**
  • 사용자가 직접 상호 작용하는 데스크톱 애플리케이션
  • 개발 및 테스팅 환경
  • 사용자가 대화형으로 로그인할 수 있는 모든 시나리오

OAuth GitHub 앱

OAuth GitHub 앱을 사용하여 애플리케이션을 통해 사용자를 인증하고 해당 자격 증명을 SDK에 전달합니다. 이렇게 하면 애플리케이션이 앱에 권한을 부여하는 사용자를 대신하여 API 요청을 수행할 GitHub Copilot 수 있습니다.

          **작동 방식:**
  1. 사용자는 OAuth GitHub 앱에 권한을 부여합니다.

  2. 앱은 사용자 액세스 토큰(gho_ 또는 ghu_ 접두사)을 받습니다.

  3. 옵션을 통해 토큰을 SDK에 전달합니다 githubToken .

           **SDK 구성:**
    
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient({
    githubToken: userAccessToken,  // Token from OAuth flow
    useLoggedInUser: false,        // Don't use stored CLI credentials
});

다른 언어의 예제는 리포지토리의 인증github/copilot-sdk 참조하세요.

          **지원되는 토큰 유형:**

* gho_ — OAuth 사용자 액세스 토큰 * ghu_ — GitHub 앱 사용자 액세스 토큰 * github_pat_ — Fine-grained personal access tokens

          **지원되지 않음:**

* ghp_ — Personal access tokens (classic) (닫기)

          **이 메서드를 사용하는 경우:**
  • 사용자가 특정 방법으로 로그인하는 웹 애플리케이션 GitHub
  • SaaS(Software-as-a-Service) 애플리케이션이 GitHub Copilot를 기반으로 구축된
  • 다른 사용자를 대신하여 요청을 수행해야 하는 모든 다중 사용자 애플리케이션

환경 변수

자동화, CI/CD 파이프라인 및 서버-서버 시나리오의 경우 환경 변수를 사용하여 인증할 수 있습니다.

          **지원되는 환경 변수(우선 순위):**

1. COPILOT_GITHUB_TOKEN— 명시적 사용에 권장됩니다.Copilot 1. GH_TOKEN — GitHub CLI 호환 가능 1. GITHUB_TOKEN — GitHub Actions 호환 가능

SDK는 코드 변경 없이 이러한 환경 변수를 자동으로 검색하고 사용합니다.

import { CopilotClient } from "@github/copilot-sdk";

// Token is read from environment variable automatically
const client = new CopilotClient();
          **이 메서드를 사용하는 경우:**
  • CI/CD 파이프라인(GitHub Actions, Jenkins 등)
  • 자동화된 테스트
  • 서비스 계정이 있는 서버 쪽 애플리케이션
  • 대화형 로그인을 사용하지 않으려는 경우 개발

BYOK(사용자 고유의 키 가져오기)

BYOK를 사용하면 Azure AI Foundry, OpenAI 또는 Anthropic과 같은 모델 공급자의 고유한 API 키를 사용할 수 있습니다. 이렇게 하면 인증이 GitHub Copilot 완전히 무시됩니다.

          **주요 이점:**
  • 구독 필요 없음 GitHub Copilot
  • 엔터프라이즈 모델 배포 사용
  • 모델 공급자를 사용하여 직접 청구
  • Azure AI Foundry, OpenAI, Anthropic 및 OpenAI 호환 엔드포인트에 대한 지원

공급자 구성 옵션, 제한 사항 및 코드 예제를 비롯한 전체 설치 지침은 BYOK(Bring Your Own Key)을 참조하세요.

인증 우선 순위

여러 인증 방법을 사용할 수 있는 경우 SDK는 이 우선 순위 순서로 사용합니다.

  1.        **명시적 `githubToken`** — SDK 생성자에 직접 전달된 토큰
    
  2.        **HMAC 키** 또는 `CAPI_HMAC_KEY``COPILOT_HMAC_KEY` 환경 변수
    
  3.        **Direct API 토큰** — `GITHUB_COPILOT_API_TOKEN``COPILOT_API_URL`
    
  4.        **환경 변수 토큰** - `COPILOT_GITHUB_TOKEN` → `GH_TOKEN` → `GITHUB_TOKEN`
    
  5.        **저장된 OAuth 자격 증명** - 이전 `copilot` CLI 로그인에서
    
  6.        **
           GitHub CLI
           ** — `gh auth` 자격 증명
    

자동 로그인 사용 안 림

SDK가 저장된 자격 증명 또는 GitHub CLI 인증을 자동으로 사용하지 않도록 하려면 옵션을 다음으로 useLoggedInUser설정합니다false.

const client = new CopilotClient({
    useLoggedInUser: false,  // Only use explicit tokens
});

다른 언어의 예제는 리포지토리의 인증github/copilot-sdk 참조하세요.

다음 단계

  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/authenticate-copilot-sdk/bring-your-own-key) 
    
  •         [MCP 서버 설명서](https://github.com/github/copilot-sdk/blob/main/docs/features/mcp.md) - SDK를 사용하여 외부 도구에 연결