메인 콘텐츠로 건너뛰기

인증

Copilot SDK는 여러 인증 방법을 지원합니다. 용도에 맞게 선택하세요.

인증 방법

BYOK는 Custom providers를 참고하세요.

Microsoft Entra ID

내장 Microsoft Entra 로그인과 토큰 갱신을 사용하려면 호스트 애플리케이션을 클라이언트에 등록합니다. clientId에는 Entra 앱 등록의 애플리케이션(클라이언트) ID를 지정합니다. EntraAuthConfig 인스턴스 또는 배열을 전달할 수 있습니다. 빈 값이나 공백만 있는 값은 InvalidArgumentException을 던집니다.
배열로 전달할 수도 있습니다.
SDK는 server.connect 핸드셰이크 중에 클라이언트 ID를 런타임에 전송합니다. 이 등록은 토큰을 명시적으로 요청하는 accounts.acquireEntraToken 서버 RPC와는 별개입니다. Entra 설정을 지정했는데 런타임이 너무 오래되어 connect를 지원하지 않으면, SDK는 설정을 조용히 무시하지 않고 This runtime does not support Entra client configuration.을 던집니다. 이 경우 런타임을 업데이트하세요. 다른 인증 방법은 계속 사용할 수 있습니다.

네트워크 콜백

network 설정으로 런타임의 프록시 해석과 Kerberos Negotiate 인증을 호스트 측 콜백에 위임할 수 있습니다. 사용하는 Copilot 런타임은 network.setProvider RPC를 지원해야 합니다. 지원하지 않으면 클라이언트 시작 시 런타임 업데이트를 안내하는 예외가 발생합니다. 콜백에는 요청 타입과 취소 여부를 확인할 수 있는 CancellationToken이 전달됩니다.
resolveProxy는 PROXY proxy.example:8080; DIRECT와 같은 PAC 형식의 문자열, 또는 직접 연결하는 DIRECT를 반환합니다. null을 반환하면 런타임이 직접 프록시를 해석합니다. authenticateNegotiate는 Negotiate 접두사를 포함하지 않는 일회용 base64 SPNEGO 토큰을 반환하며, 자격 증명이 없으면 null을 반환합니다. 콜백이 예외를 던지면 RPC가 실패하며 직접 연결로 폴백하지 않습니다. 자격 증명을 발급하기 전에 SPN을 검증하세요. scope를 생략하면 connection입니다. connection은 이 클라이언트가 생성하거나 재개한 세션의 요청만 대상으로 합니다. runtime은 공유 백그라운드 통신도 대상으로 하지만, 이 scope를 동시에 보유할 수 있는 연결은 하나뿐입니다.

GitHub 로그인(CLI)

copilot 또는 gh CLI에 로그인이 되어 있는 경우, 아무것도 지정하지 않으면 저장된 인증 정보가 사용됩니다.

OAuth GitHub App / PAT

OAuth 플로우로 취득한 사용자 액세스 토큰 또는 Fine-grained PAT를 github_token에 전달합니다.
  • gho_ / ghu_ / github_pat_을 상정
  • ghp_(Classic PAT)는 권장하지 않음
github_token을 지정하면 use_logged_in_user는 자동으로 false가 됩니다. 명시적으로 전환하려면 다음과 같이 합니다.
자세한 내용은 GitHub token을 참고하세요. github_token과 use_logged_in_user는 stdio 모드 전용입니다. TCP 모드에서는 Copilot CLI 쪽에서 인증되어 있어야 합니다.

호스트에서 생성한 시크릿 마스킹

호스트 애플리케이션이 MCP OAuth 등을 통해 토큰을 동적으로 취득하는 경우, Copilot CLI의 리댁션 필터에 등록하세요. CLI는 등록된 값을 세션 로그와 내보내기에서 마스킹합니다.
이 호출은 onMcpAuthRequest로 토큰을 취득하고 전달하는 것과는 별개입니다. 토큰을 취득한 후 명시적으로 호출하세요. SDK는 이 RPC를 위해 값을 저장하거나 별도로 로그에 기록하지 않습니다.

환경 변수

환경 변수로 토큰을 전달하는 경우 CLI가 자동으로 검출합니다. 우선순위는 위에서부터 순서대로입니다.
  1. COPILOT_GITHUB_TOKEN
  2. GH_TOKEN
  3. GITHUB_TOKEN
TCP 모드에서는 CLI 서버 쪽의 환경 변수를 설정하세요.

인증 우선순위

SDK는 다음 순서로 인증 정보를 해결합니다.
  1. github_token(명시적 지정)
  2. 환경 변수 토큰(COPILOT_GITHUB_TOKEN → GH_TOKEN → GITHUB_TOKEN)
  3. CLI에 저장된 OAuth 인증 정보
  4. gh CLI의 인증 정보

자동 로그인 비활성화

저장된 인증 정보를 사용하지 않으려면 use_logged_in_user를 false로 설정합니다. false로 설정하면 인증에는 명시적으로 지정한 토큰(github_token)만 사용되며, 환경 변수 토큰(COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN)은 무시됩니다.
github_token과 마찬가지로 stdio 모드에서만 지원됩니다. TCP 모드에서는 Copilot CLI 쪽에서 인증되어 있어야 합니다.

인증 상태 확인

auth.getStatus의 결과를 취득해 확인할 수 있습니다.

대화형 로그인용 계정 선택

세션 RPC로 loginAccounts를 열거하면 지정한 프로바이더에서 재사용할 수 있는 저장된 ID를 가져올 수 있습니다. 각 항목의 label은 표시용이며, active는 해당 ID가 현재 세션의 활성 계정과 일치하는지를 나타냅니다. accountId는 프로바이더가 소유하는 불투명한 ID입니다. 파싱하거나 수정하지 말고 그대로 로그인 요청에 전달하세요.
프로바이더의 일반 동작으로 저장된 ID를 재사용하려면 mode: 'default'를 사용합니다. 프로바이더의 계정 선택 화면을 명시적으로 표시하려면 mode: 'selectAccount'를 사용하며, 이 경우 accountId를 전달하지 않습니다. begin(LoginProviderKind::ENTRA) 같은 기존 호출도 계속 사용할 수 있습니다.
최신 정보는 GitHub 저장소를 참고하세요.
마지막 수정일 2026년 11월 13일