인증 방법
| Method | 사용 사례 | Copilot 구독 필요 |
|---|---|---|
| GitHub 로그인한 사용자 | 사용자가 GitHub 사용하여 로그인하는 대화형 앱 | Yes |
| OAuth GitHub 앱 | OAuth를 통해 사용자를 대신하여 작동하는 앱 | Yes |
| 환경 변수 | CI/CD, 자동화, 서버-서버 | Yes |
| BYOK (bring your own key) | 고유한 API 키 사용(Azure AI Foundry, OpenAI 등) | No |
GitHub 로그인 사용자
Copilot CLI를 대화형으로 실행할 때 기본 인증 방법입니다. 사용자는 GitHub OAuth 디바이스 흐름을 통해 인증하고 SDK는 저장된 자격 증명을 사용합니다.
작동 방식:
- 사용자는
copilotCLI를 실행하고 GitHub OAuth를 통해 로그인합니다. - 자격 증명은 시스템 키 집합에 안전하게 저장됩니다.
- SDK는 저장된 자격 증명을 자동으로 사용합니다.
SDK 구성:
import { CopilotClient } from "@github/copilot-sdk";
// Default: uses logged-in user credentials
const client = new CopilotClient();
from copilot import CopilotClient
# Default: uses logged-in user credentials
client = CopilotClient()
await client.start()
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
_ = client
}
import copilot "github.com/github/copilot-sdk/go"
// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
using GitHub.Copilot;
// Default: uses logged-in user credentials
await using var client = new CopilotClient();
import com.github.copilot.sdk.CopilotClient;
// Default: uses logged-in user credentials
var client = new CopilotClient();
client.start().get();
사용 시기:
- 사용자가 직접 상호 작용하는 데스크톱 애플리케이션
- 개발 및 테스팅 환경
- 사용자가 대화형으로 로그인할 수 있는 모든 시나리오
OAuth GitHub 앱
OAuth GitHub 앱을 사용하여 애플리케이션을 통해 사용자를 인증하고 해당 자격 증명을 SDK에 전달합니다. 이를 통해 애플리케이션은 앱에 권한을 부여한 사용자를 대신해 Copilot API 요청을 보낼 수 있습니다.
작동 방식:
- 사용자가 OAuth GitHub 앱에 권한을 부여합니다.
- 앱이 사용자 액세스 토큰(
gho_또는ghu_접두사)을 받습니다. - 옵션을 통해
gitHubTokenSDK에 토큰 전달
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
});
from copilot import CopilotClient
client = CopilotClient({
"github_token": user_access_token, # Token from OAuth flow
"use_logged_in_user": False, # Don't use stored CLI credentials
})
await client.start()
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
userAccessToken := "token"
client := copilot.NewClient(&copilot.ClientOptions{
GitHubToken: userAccessToken,
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
import copilot "github.com/github/copilot-sdk/go"
client := copilot.NewClient(&copilot.ClientOptions{
GithubToken: userAccessToken, // Token from OAuth flow
UseLoggedInUser: copilot.Bool(false), // Don't use stored CLI credentials
})
using GitHub.Copilot;
var userAccessToken = "token";
await using var client = new CopilotClient(new CopilotClientOptions
{
GitHubToken = userAccessToken,
UseLoggedInUser = false,
});
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
});
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;
var client = new CopilotClient(new CopilotClientOptions()
.setGitHubToken(userAccessToken) // Token from OAuth flow
.setUseLoggedInUser(false) // Don't use stored CLI credentials
);
client.start().get();
지원되는 토큰 유형:
gho_- OAuth 사용자 액세스 토큰ghu_- 앱 사용자 액세스 토큰 GitHubgithub_pat_- 세분화된 개인용 액세스 토큰
지원되지 않음:
ghp_- 클래식 개인용 액세스 토큰(사용되지 않음)
사용 시기:
- 사용자가 GitHub 통해 로그인하는 웹 애플리케이션
- Copilot 위에 빌드되는 SaaS 애플리케이션
- 다른 사용자를 대신하여 요청을 수행해야 하는 모든 다중 사용자 애플리케이션
환경 변수
자동화, CI/CD 파이프라인 및 서버-서버 시나리오의 경우 환경 변수를 사용하여 인증할 수 있습니다.
지원되는 환경 변수(우선 순위):
COPILOT_GITHUB_TOKEN- 명시적 Copilot 사용에 권장됨GH_TOKEN- GitHub CLI 호환GITHUB_TOKEN- GitHub Actions 호환
작동 방식:
- 유효한 토큰으로 지원되는 환경 변수 중 하나를 설정합니다.
- SDK는 토큰을 자동으로 검색하고 사용합니다.
SDK 구성:
코드 변경이 필요하지 않습니다. SDK는 환경 변수를 자동으로 검색합니다.
import { CopilotClient } from "@github/copilot-sdk";
// Token is read from environment variable automatically
const client = new CopilotClient();
from copilot import CopilotClient
# Token is read from environment variable automatically
client = CopilotClient()
await client.start()
사용 시기:
- 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) 을 참조하세요.
- Azure AI Foundry 설정
- 공급자 구성 옵션
- 제한 사항 및 고려 사항
- 전체 코드 예제
인증 우선 순위
여러 인증 방법을 사용할 수 있는 경우 SDK는 이 우선 순위 순서로 사용합니다.
- 명시적
gitHubToken- SDK 생성자에 직접 전달되는 토큰 - HMAC 키 -
CAPI_HMAC_KEY또는COPILOT_HMAC_KEY환경 변수 - 직접 API 토큰 -
GITHUB_COPILOT_API_TOKEN포함COPILOT_API_URL - 환경 변수 토큰 -
COPILOT_GITHUB_TOKEN``GH_TOKEN→ →GITHUB_TOKEN - 저장된 OAuth 자격 증명 - 이전
copilotCLI 로그인에서 - GitHub CLI -
gh auth자격 증명
자동 로그인 사용 안 림
SDK가 저장된 자격 증명 또는 gh CLI 인증을 자동으로 사용하지 않도록 하려면 다음 useLoggedInUser: false 옵션을 사용합니다.
const client = new CopilotClient({
useLoggedInUser: false, // Only use explicit tokens
});
from copilot import CopilotClient
client = CopilotClient({
"use_logged_in_user": False,
})
client = CopilotClient({
"use_logged_in_user": False, # Only use explicit tokens
})
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
client := copilot.NewClient(&copilot.ClientOptions{
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
client := copilot.NewClient(&copilot.ClientOptions{
UseLoggedInUser: copilot.Bool(false), // Only use explicit tokens
})
await using var client = new CopilotClient(new CopilotClientOptions
{
UseLoggedInUser = false, // Only use explicit tokens
});
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;
var client = new CopilotClient(new CopilotClientOptions()
.setUseLoggedInUser(false) // Only use explicit tokens
);
client.start().get();
다음 단계
- BYOK (bring your own key) - 사용자 고유의 API 키를 사용하는 방법 알아보기
- 첫 번째 Copilot 기반 앱 빌드 - 첫 번째 Copilot 지원 앱 빌드
- Using MCP servers with the GitHub Copilot SDK - 외부 도구에 연결