외부 액세스 토큰은 Replit Core 및 Pro 플랜에서 사용할 수 있습니다.
Enterprise 고객은 이 기능이 워크스페이스에서 활성화되기 전에 Replit에
옵트인을 요청해야 합니다. 토큰은 배포가 비공개로 설정된 후에만 게시 설정에
표시됩니다.
토큰을 사용해야 하는 경우
브라우저 외부의 무언가가 비공개 Replit App을 호출해야 할 때 외부 액세스 토큰을 사용하세요. 일반적인 사례는 다음과 같습니다.- 매 커밋마다 개발 URL에 대해 스모크 테스트를 실행하는 GitHub Actions 워크플로.
- 게시된 앱의 상태 확인 엔드포인트를 호출하는 업타임 모니터(Better Stack, Pingdom, UptimeRobot).
- 비공개 배포로 POST 요청을 보내는 웹훅 수신기 - Stripe, Slack, GitHub.
- 디버깅 중 팀원의 컴퓨터에서 실행하는
curl또는fetch호출.
토큰 환경
각 토큰은 하나의 환경에 바인딩됩니다.| 환경 | 작동 위치 | 사용 목적 |
|---|---|---|
Development | 앱의 워크스페이스 개발 URL(*.replit.dev) | 개발 중 실행 중인 Repl에 접근할 때 |
Production | 앱의 게시된 배포(*.replit.app 및 사용자 지정 도메인) | 외부 서비스에서 비공개 배포에 접근할 때 |
Production 토큰은 현재 게시된 배포에 연결됩니다. 새로운 배포로 다시
게시하면 기존 프로덕션 토큰은 작동을 멈추므로 새 토큰을 발급해야 합니다.
외부 액세스 토큰 생성하기
액세스 토큰 생성을 선택하고 다음을 입력합니다.
- 레이블(선택 사항): 나중에 토큰을 알아볼 수 있도록
CI또는Stripe webhook과 같은 짧은 이름입니다. 최대 120자까지 입력할 수 있습니다. - 환경: 호출하는 서비스가 앱에 접근해야 하는 위치에 따라
Development또는Production을 선택합니다. - 만료 시점:
1시간,24시간,7일,30일,3개월,1년,5년중 유효 기간을 선택합니다. 작업에 맞는 가장 짧은 기간을 선택하세요. “만료 없음” 옵션은 제공되지 않습니다.
- 쿼리 매개변수 복사 - URL에 붙일 수 있는
?project-protection-bypass=<token>을 복사합니다. 간단한curl확인에 유용합니다. - 토큰만 복사 -
Authorization: Bearer헤더로 보내기에 적합한 원시 토큰을 복사합니다.
첫 번째 토큰을 생성하면 아직 활성화되지 않았던 경우 앱의 외부 액세스가
자동으로 켜집니다. 보호 장치가 없으면 토큰이 우회할 대상이 없습니다.
토큰 사용하기
다음 두 가지 방법 중 하나로 토큰을 제시하세요.Authorization 헤더(권장)
쿼리 매개변수
기존 토큰 관리하기
외부 액세스 토큰 섹션에는 앱을 위해 생성한 모든 토큰이 최신순으로 나열되며, 레이블, 환경, 생성일, 만료일, 회수 상태가 함께 표시됩니다. 토큰의 전체 값은 생성 시에만 표시되므로, 토큰을 구분할 수 있도록 각 행에 토큰의 마지막 몇 글자가 표시됩니다. 자신이 생성한 토큰만 볼 수 있습니다. 앱을 소유하고 있더라도 다른 공동 작업자의 토큰은 그들만 볼 수 있습니다.토큰 회수하기
더 이상 필요하지 않거나 유출이 의심되는 즉시 토큰을 회수하세요. 회수하려면 다음 단계를 따르세요. 회수는 즉시 이루어지며 되돌릴 수 없습니다. 해당 토큰을 사용하는 트래픽은 몇 초 안에 거부되기 시작합니다. 다시 접근이 필요하다면 새 토큰을 발급하세요. 자신이 생성한 토큰만 회수할 수 있습니다. 워크스페이스에서 공동 작업자를 제거하면 해당 앱을 위해 그들이 발급한 토큰도 자동으로 회수됩니다.토큰을 안전하게 보관하기
외부 액세스 토큰은 자격 증명입니다. API 키나 비밀번호와 동일한 주의를 기울여 다루세요.해야 할 것
- 토큰을 시크릿 관리자에 저장하세요 - GitHub Actions 시크릿, CI 공급업체의 볼트, 클라우드 제공업체의 시크릿 저장소, 또는 비밀번호 관리자 등입니다. 절대로 저장소에 커밋하지 마세요.
- 가능하면 짧은 유효 기간을 사용하세요. 일회성 통합을 위한 7일짜리 토큰이 방치된 5년짜리 토큰보다 안전합니다.
- 모든 토큰에 레이블을 붙이세요. 그래야 나중에 무엇을 위한 토큰인지, 여전히 사용 중인지 알 수 있습니다. 레이블이 없는 토큰이 가장 먼저 유출되고 가장 나중에 회수됩니다.
- 소비자별로 별도의 토큰을 발급하세요. CI 작업마다 하나, 웹훅 소스마다 하나, 업타임 체크마다 하나씩 만드세요. 무언가 유출되거나 더 이상 필요하지 않은 공급업체가 생기면 그 토큰 하나만 회수하면 됩니다.
- 토큰이 URL 로그, 브라우저 기록, referer 헤더를 통해 유출되지 않도록
쿼리 매개변수보다
Authorization헤더를 선호하세요. - 유출된 로그, 공개 저장소 커밋, 화면 공유, 퇴사한 직원의 노트북 등 토큰이 노출되었을 가능성이 있다면 즉시 회수하세요. 회수는 바로 적용되며, 이후에 대체 토큰을 발급하세요.
하지 말아야 할 것
- 팀원이나 서비스 간에 토큰을 공유하지 마세요. 두 시스템이 하나의 토큰을 공유하면 한쪽을 손상시키지 않고는 다른 쪽을 회수할 수 없습니다.
- 토큰을 채팅, 이메일, 스크린샷, 이슈 트래커에 붙여넣지 마세요. 이런 채널은 예상치 못한 방식으로 보관, 색인, 공유됩니다.
- 클라이언트 측 코드에 토큰을 넣지 마세요 - 브라우저 앱, 모바일 앱, 데스크톱 바이너리 등입니다. 사용자의 기기로 배포되는 모든 것은 공개된다고 간주해야 합니다.
- 브라우저 세션에 토큰을 사용하지 마세요. 토큰은 API 호출에는 작동하지만 브라우저 탭에서 SPA를 로드하는 데는 사용할 수 없습니다. 이 경우에는 일반적인 Replit 로그인을 사용하세요.
- 기본값으로 5년 만료를 선택하지 마세요. 소비자가 실제로 접근이 필요한 기간에 맞게 유효 기간을 설정하세요.
문제 해결
프로덕션 토큰이 갑자기 작동을 멈췄습니다
프로덕션 토큰이 갑자기 작동을 멈췄습니다
프로덕션 토큰은 특정 게시된 배포에 바인딩됩니다. 배포 유형을 변경하거나
배포를 삭제하고 다시 만드는 등의 방식으로 앱을 다시 게시했다면 기존
프로덕션 토큰은 무효화됩니다. 새 배포의 설정에서 새 토큰을 발급하세요.
토큰이 `curl`에서는 작동하지만 브라우저에서는 여전히 로그인 페이지가 표시됩니다
토큰이 `curl`에서는 작동하지만 브라우저에서는 여전히 로그인 페이지가 표시됩니다
외부 액세스 토큰은 브라우저 세션이 아닌 API 트래픽을 위한 것입니다.
단일 페이지 앱이 브라우저에서 로드될 때 초기 HTML 요청은 쿼리 매개변수를
통해 토큰을 전달할 수 있지만, JavaScript 번들, CSS, API 호출에 대한
후속 요청에는 토큰이 포함되지 않아 거부됩니다. 앱을 인터랙티브하게
탐색하려면 Replit에 정상적으로 로그인하세요.
토큰을 잃어버렸습니다 - 다시 볼 수 있나요?
토큰을 잃어버렸습니다 - 다시 볼 수 있나요?
아니요. Replit은 생성 시점에만 토큰을 한 번 표시합니다. 목록 보기에는
메타데이터(레이블, 환경, 만료일, 마지막 몇 글자)가 표시되지만 전체
토큰 값은 표시되지 않습니다. 토큰을 잃어버렸다면 해당 토큰을 회수하고
새 토큰을 만드세요.
다음 단계
- 비공개 배포: 이 토큰들이 우회하는 기본 접근 제어 기능입니다.
- Replit App 접근 관리: 어떤 Replit 사용자가 비공개 앱에 로그인할 수 있는지 관리합니다.