메인 콘텐츠로 건너뛰기
외부 액세스 토큰은 특정 Replit App을 위해 발급하는 베어러 토큰입니다. CI 파이프라인, 웹훅, 상태 확인 핑거, Slack 봇, 내부 스크립트와 같은 자동화된 서비스가 비공개 개발 URL 또는 비공개 배포로 잠긴 앱이라도 접근할 수 있게 해줍니다. 각 토큰을 비밀번호처럼 다루세요. 토큰을 가진 사람은 토큰이 만료되거나 회수될 때까지 앱에 접근할 수 있습니다.
외부 액세스 토큰은 Replit Core 및 Pro 플랜에서 사용할 수 있습니다. Enterprise 고객은 이 기능이 워크스페이스에서 활성화되기 전에 Replit에 옵트인을 요청해야 합니다. 토큰은 배포가 비공개로 설정된 후에만 게시 설정에 표시됩니다.

토큰을 사용해야 하는 경우

브라우저 외부의 무언가가 비공개 Replit App을 호출해야 할 때 외부 액세스 토큰을 사용하세요. 일반적인 사례는 다음과 같습니다.
  • 매 커밋마다 개발 URL에 대해 스모크 테스트를 실행하는 GitHub Actions 워크플로.
  • 게시된 앱의 상태 확인 엔드포인트를 호출하는 업타임 모니터(Better Stack, Pingdom, UptimeRobot).
  • 비공개 배포로 POST 요청을 보내는 웹훅 수신기 - Stripe, Slack, GitHub.
  • 디버깅 중 팀원의 컴퓨터에서 실행하는 curl 또는 fetch 호출.
외부 액세스 토큰은 브라우저에서 UI 페이지를 여는 것이 아니라 API 트래픽을 위해 설계되었습니다. 단일 페이지 앱(Vite, Next.js 등)은 후속 요청으로 JavaScript 번들을 로드하는데, 이 요청에는 토큰이 포함되지 않아 실패합니다. 인터랙티브하게 탐색하려면 대신 정상적으로 로그인하세요.

토큰 환경

각 토큰은 하나의 환경에 바인딩됩니다.
환경작동 위치사용 목적
Development앱의 워크스페이스 개발 URL(*.replit.dev)개발 중 실행 중인 Repl에 접근할 때
Production앱의 게시된 배포(*.replit.app 및 사용자 지정 도메인)외부 서비스에서 비공개 배포에 접근할 때
Production 토큰은 현재 게시된 배포에 연결됩니다. 새로운 배포로 다시 게시하면 기존 프로덕션 토큰은 작동을 멈추므로 새 토큰을 발급해야 합니다.

외부 액세스 토큰 생성하기

1
노출하려는 앱을 열고, 게시 도구를 엽니다.
2
설정 조정을 선택해 재배포 옵션을 확장합니다.
3
보안 섹션에서 외부 액세스 토큰을 찾습니다.
4
액세스 토큰 생성을 선택하고 다음을 입력합니다.
  • 레이블(선택 사항): 나중에 토큰을 알아볼 수 있도록 CI 또는 Stripe webhook과 같은 짧은 이름입니다. 최대 120자까지 입력할 수 있습니다.
  • 환경: 호출하는 서비스가 앱에 접근해야 하는 위치에 따라 Development 또는 Production을 선택합니다.
  • 만료 시점: 1시간, 24시간, 7일, 30일, 3개월, 1년, 5년 중 유효 기간을 선택합니다. 작업에 맞는 가장 짧은 기간을 선택하세요. “만료 없음” 옵션은 제공되지 않습니다.
5
생성을 선택합니다.
Replit은 토큰을 한 번만 표시합니다. 지금 복사하세요. 대화상자를 닫으면 토큰을 다시 볼 방법이 없습니다. 토큰을 잃어버렸다면 해당 토큰을 회수하고 새 토큰을 발급하세요. 토큰 표시 화면에서는 두 가지 복사 작업을 제공합니다.
  • 쿼리 매개변수 복사 - URL에 붙일 수 있는 ?project-protection-bypass=<token>을 복사합니다. 간단한 curl 확인에 유용합니다.
  • 토큰만 복사 - Authorization: Bearer 헤더로 보내기에 적합한 원시 토큰을 복사합니다.
첫 번째 토큰을 생성하면 아직 활성화되지 않았던 경우 앱의 외부 액세스가 자동으로 켜집니다. 보호 장치가 없으면 토큰이 우회할 대상이 없습니다.

토큰 사용하기

다음 두 가지 방법 중 하나로 토큰을 제시하세요.

Authorization 헤더(권장)

이 방법은 웹훅, CI 스크립트, 백엔드 간 호출 등 거의 모든 경우에 적합한 선택입니다. 토큰은 URL을 캡처하는 로그에 나타나지 않으며 브라우저 기록에도 남지 않습니다.

쿼리 매개변수

헤더를 설정할 수 없는 경우 - 예를 들어 URL만 받는 서비스인 경우에만 쿼리 매개변수 방식을 사용하세요. 토큰이 포함된 URL은 프록시 로그, 셸 기록, 스크린샷에 남기 쉬우므로 가능하면 항상 헤더 방식을 선호하세요.

기존 토큰 관리하기

외부 액세스 토큰 섹션에는 앱을 위해 생성한 모든 토큰이 최신순으로 나열되며, 레이블, 환경, 생성일, 만료일, 회수 상태가 함께 표시됩니다. 토큰의 전체 값은 생성 시에만 표시되므로, 토큰을 구분할 수 있도록 각 행에 토큰의 마지막 몇 글자가 표시됩니다. 자신이 생성한 토큰만 볼 수 있습니다. 앱을 소유하고 있더라도 다른 공동 작업자의 토큰은 그들만 볼 수 있습니다.

토큰 회수하기

더 이상 필요하지 않거나 유출이 의심되는 즉시 토큰을 회수하세요. 회수하려면 다음 단계를 따르세요.
1
앱의 게시 설정에서 외부 액세스 토큰 섹션을 엽니다.
2
목록에서 토큰을 찾아 휴지통 아이콘을 선택합니다.
3
회수를 확인합니다.
회수는 즉시 이루어지며 되돌릴 수 없습니다. 해당 토큰을 사용하는 트래픽은 몇 초 안에 거부되기 시작합니다. 다시 접근이 필요하다면 새 토큰을 발급하세요. 자신이 생성한 토큰만 회수할 수 있습니다. 워크스페이스에서 공동 작업자를 제거하면 해당 앱을 위해 그들이 발급한 토큰도 자동으로 회수됩니다.

토큰을 안전하게 보관하기

외부 액세스 토큰은 자격 증명입니다. API 키나 비밀번호와 동일한 주의를 기울여 다루세요.

해야 할 것

  • 토큰을 시크릿 관리자에 저장하세요 - GitHub Actions 시크릿, CI 공급업체의 볼트, 클라우드 제공업체의 시크릿 저장소, 또는 비밀번호 관리자 등입니다. 절대로 저장소에 커밋하지 마세요.
  • 가능하면 짧은 유효 기간을 사용하세요. 일회성 통합을 위한 7일짜리 토큰이 방치된 5년짜리 토큰보다 안전합니다.
  • 모든 토큰에 레이블을 붙이세요. 그래야 나중에 무엇을 위한 토큰인지, 여전히 사용 중인지 알 수 있습니다. 레이블이 없는 토큰이 가장 먼저 유출되고 가장 나중에 회수됩니다.
  • 소비자별로 별도의 토큰을 발급하세요. CI 작업마다 하나, 웹훅 소스마다 하나, 업타임 체크마다 하나씩 만드세요. 무언가 유출되거나 더 이상 필요하지 않은 공급업체가 생기면 그 토큰 하나만 회수하면 됩니다.
  • 토큰이 URL 로그, 브라우저 기록, referer 헤더를 통해 유출되지 않도록 쿼리 매개변수보다 Authorization 헤더를 선호하세요.
  • 유출된 로그, 공개 저장소 커밋, 화면 공유, 퇴사한 직원의 노트북 등 토큰이 노출되었을 가능성이 있다면 즉시 회수하세요. 회수는 바로 적용되며, 이후에 대체 토큰을 발급하세요.

하지 말아야 할 것

  • 팀원이나 서비스 간에 토큰을 공유하지 마세요. 두 시스템이 하나의 토큰을 공유하면 한쪽을 손상시키지 않고는 다른 쪽을 회수할 수 없습니다.
  • 토큰을 채팅, 이메일, 스크린샷, 이슈 트래커에 붙여넣지 마세요. 이런 채널은 예상치 못한 방식으로 보관, 색인, 공유됩니다.
  • 클라이언트 측 코드에 토큰을 넣지 마세요 - 브라우저 앱, 모바일 앱, 데스크톱 바이너리 등입니다. 사용자의 기기로 배포되는 모든 것은 공개된다고 간주해야 합니다.
  • 브라우저 세션에 토큰을 사용하지 마세요. 토큰은 API 호출에는 작동하지만 브라우저 탭에서 SPA를 로드하는 데는 사용할 수 없습니다. 이 경우에는 일반적인 Replit 로그인을 사용하세요.
  • 기본값으로 5년 만료를 선택하지 마세요. 소비자가 실제로 접근이 필요한 기간에 맞게 유효 기간을 설정하세요.

문제 해결

프로덕션 토큰은 특정 게시된 배포에 바인딩됩니다. 배포 유형을 변경하거나 배포를 삭제하고 다시 만드는 등의 방식으로 앱을 다시 게시했다면 기존 프로덕션 토큰은 무효화됩니다. 새 배포의 설정에서 새 토큰을 발급하세요.
외부 액세스 토큰은 브라우저 세션이 아닌 API 트래픽을 위한 것입니다. 단일 페이지 앱이 브라우저에서 로드될 때 초기 HTML 요청은 쿼리 매개변수를 통해 토큰을 전달할 수 있지만, JavaScript 번들, CSS, API 호출에 대한 후속 요청에는 토큰이 포함되지 않아 거부됩니다. 앱을 인터랙티브하게 탐색하려면 Replit에 정상적으로 로그인하세요.
아니요. Replit은 생성 시점에만 토큰을 한 번 표시합니다. 목록 보기에는 메타데이터(레이블, 환경, 만료일, 마지막 몇 글자)가 표시되지만 전체 토큰 값은 표시되지 않습니다. 토큰을 잃어버렸다면 해당 토큰을 회수하고 새 토큰을 만드세요.

다음 단계

  • 비공개 배포: 이 토큰들이 우회하는 기본 접근 제어 기능입니다.
  • Replit App 접근 관리: 어떤 Replit 사용자가 비공개 앱에 로그인할 수 있는지 관리합니다.