
사용자 관리 및 JWT 토큰 발급을 위한 JWT 기반 API
Auth는 Go로 작성된 사용자 관리 및 인증 서버로서, Supabase의 다음과 같은 기능을 지원합니다:
이 프로젝트는 원래 Netlify의 GoTrue 코드베이스를 기반으로 하였지만, 두 프로젝트는 기능과 역량에서 크게 분기되었습니다.
프로젝트에 기여하려면 기여 가이드를 참조하세요.
자신의 사용자 지정 환경 변수를 저장하려면 .env 파일을 만드세요. example.env를 참조하세요.
docker-compose -f docker-compose-dev.yml up postgresmake build . 다음과 같은 출력이 표시되어야 합니다:```bash
go build -ldflags "-X github.com/supabase/auth/cmd.Version=git rev-parse HEAD"
GOOS=linux GOARCH=arm64 go build -ldflags "-X github.com/supabase/auth/cmd.Version=git rev-parse HEAD" -o gotrue-arm643. auth 바이너리를 실행하세요: `./auth`
### Docker가 설치된 경우
자체 맞춤 환경 변수를 저장하려면 `.env.docker` 파일을 만드세요. [`example.docker.env`](https://github.com/supabase/auth/blob/HEAD/example.docker.env)를 참조하세요.
1. `make build`
2. `make dev`
3. `docker ps` 명령어는 두 개의 Docker 컨테이너(`auth-auth-1` 및 `auth-postgres-1`)를 표시해야 합니다.
4. 끝입니다! [헬스 체크 엔드포인트](http://localhost:9999/health)를 방문하여 auth가 실행 중인지 확인하세요.
## 프로덕션에서 실행하기
프로덕션 환경에서 인증 서버를 실행하는 것은 쉬운 일이 아닙니다. 우리는
[Supabase Auth](https://supabase.com/auth) 사용을 권장합니다. 이는 정기적인
보안 업데이트를 받습니다.
그렇지 않으면 최신 버전으로 신속하게 업데이트하는 프로세스를 설정하세요.
이 저장소를 팔로우하면 됩니다. 특히
[Releases](https://github.com/supabase/auth/releases) 및 [Security
Advisories](https://github.com/supabase/auth/security/advisories) 섹션을 확인하세요.
### 이전 버전과의 호환성
Auth는 [시맨틱 버저닝](https://semver.org) 체계를 사용합니다. 다음은
이전 버전과의 호환성 보장에 대한 추가 설명입니다.
**Go API 호환성**
Auth는 Go 라이브러리로 사용하기 위한 것이 아닙니다. 이렇게 사용하는 경우
어떤 버전 번호가 변경되더라도 이전 버전 API 호환성은
보장되지 않습니다.
**패치**
패치 버전 변경은 다음 항목에 대한 이전 버전과의 호환성을 보장합니다:
- 데이터베이스 객체 (테이블, 컬럼, 인덱스, 함수).
- REST API
- JWT 구조
- 구성
보장되는 예:
- 컬럼의 유형은 변경되지 않습니다.
- 테이블의 기본 키는 변경되지 않습니다.
- 인덱스는 제거되지 않습니다.
- 고유성 제약 조건은 제거되지 않습니다.
- REST API는 제거되지 않습니다.
- REST API 매개변수는 이전과 동일하게 작동합니다 (버그가 수정된 경우에는 더 나을 수도
있습니다).
- 구성은 변경되지 않습니다.
보장되지 않는 예:
- 테이블에 새 컬럼이 추가될 수 있습니다.
- 테이블의 컬럼 순서가 변경될 수 있습니다.
- 고유하지 않은 제약 조건은 제거될 수 있습니다 (데이터베이스 수준 검사, null, 기본
값).
- JWT에 새 속성이 추가될 수 있습니다.
**마이너**
마이너 버전 변경은 다음 항목에 대한 이전 버전과의 호환성을 보장합니다:
- REST API
- JWT 구조
- 구성
이러한 보장에 대한 예외는 다른 방법으로 해결할 수 없는 심각한 보안 문제가
발견된 경우에만 적용됩니다.
보장되는 예:
- 기존 API는 더 이상 사용되지 않게 될 수 있지만 다음 몇 개의 마이너 버전 릴리스
동안 계속 작동합니다.
- 구성 변경은 더 이상 사용되지 않게 될 수 있지만 다음 몇 개의
마이너 버전 릴리스 동안 계속 작동합니다.
- 이미 발급된 JWT는 허용되지만, 새 JWT는 (보통은 유사한) 다른
구조일 수 있습니다.
보장되지 않는 예:
- 사용 중단 공지 후 JWT 필드가 제거될 수 있습니다.
- 사용 중단 공지 후 특정 API가 제거될 수 있습니다.
- 사용 중단 공지 후 외부 공급자로 로그인하는 기능이 제거될 수 있습니다.
- 테이블, 인덱스, 뷰, 함수에 대한 삭제, 잘라내기, 중요한 스키마
변경.
실행 로그에 사용 중단 공지를 최소 두 개의 메이저 버전 릴리스 동안 또는
여러 릴리스가 배포되는 경우 2주 동안 제공하는 것을 목표로 합니다. 공지가
유효한 동안에는 호환성이 보장됩니다.
**메이저**
메이저 버전 변경은 이전 버전과의 호환성을
보장하지 않습니다.
### 상속된 기능
Netlify 코드베이스에서 상속된 일부 기능은 Supabase에서 지원되지 않으며
향후 사전 공지 없이 제거될 수 있습니다. 다음은
해당 기능의 전체 목록입니다:
1. `instances` 테이블을 통한 멀티 테넌시, 즉 `GOTRUE_MULTI_INSTANCE_MODE`
구성 매개변수.
2. 시스템 사용자 (zero UUID 사용자).
3. `is_super_admin` 컬럼을 통한 슈퍼 관리자.
4. `GOTRUE_JWT_ADMIN_GROUP_NAME` 및 기타 구성 필드를 통한 JWT의 그룹
정보.
5. JWT 서명. Supabase Auth는 비대칭 키(기본적으로 RS256;
선택적으로 ECC/Ed25519)를 지원합니다. HS256은 호환성을 위해 계속 지원되지만,
더 쉬운 검증과
교체를 위해 비대칭 키로 마이그레이션하는 것이 좋습니다. 향후 사용 중단은 변경 로그에서 공지됩니다. 자세한 내용은
[JWT 서명 키](https://supabase.com/docs/guides/auth/signing-keys)와
[JWTs 가이드](https://supabase.com/docs/guides/auth/jwts)를 참조하세요.
이 목록은 완전한 목록이 아니며 변경될 수 있습니다.
### 자체 호스팅 시 모범 사례
자체 호스팅 시 Auth와의 이전 버전 호환성을 보장하기 위해 따라야 할 몇 가지 모범
사례는 다음과 같습니다:
1. Auth가 관리하는 스키마를 수정하지 마세요. `migrations` 디렉토리에서 모든
마이그레이션을 확인할 수 있습니다.
2. 데이터베이스의 스키마와 데이터 구조에 의존하지 마세요. 사용자 정보를 파악하려면
항상 Auth API와 JWT를 사용하세요.
3. 항상 로드 밸런서, CDN, nginx 또는 이와 유사한 소프트웨어와 같은 TLS 지원
프록시 뒤에서 Auth를 실행하세요.
## 구성
`.env`라는 구성 파일,
환경 변수, 또는 둘의 조합을 사용하여 Auth를 구성할 수 있습니다. 환경 변수는 `GOTRUE_` 접두사가 붙으며 항상 파일로 제공된 값보다 우선합니다.
### 최상위 수준```properties
GOTRUE_SITE_URL=https://example.netlify.com/
SITE_URL — string 필수
사이트가 위치한 기본 URL입니다. 현재 다른 설정과 함께 이메일에서 사용되는 URL을 구성하는 데 사용됩니다. SITE_URL과 호스트를 공유하는 모든 URI는 redirect_to 매개변수에 허용되는 값입니다(/authorize 등 참조).
URI_ALLOW_LIST — string
유효한 redirect_to 대상으로 허용되는 URI 목록입니다. 쉼표로 구분합니다(예: "https://foo.example.com,https://*.foo.example.com,https://bar.example.com"). 기본값은 []입니다. 글롭(glob)을 통한 와일드카드 매칭을 지원합니다. 예를 들어 https://*.foo.example.com은 https://a.foo.example.com 및 https://b.foo.example.com을 허용합니다. 글롭은 하위 도메인에서도 지원됩니다. 예를 들어 https://foo.example.com/*은 https://foo.example.com/page1 및 https://foo.example.com/page2를 허용합니다.
보다 일반적인 글롭 패턴은 다음 링크를 참조하세요.
OPERATOR_TOKEN — string 멀티 인스턴스 모드 전용
이 마이크로서비스의 운영자(보통 Netlify)와 공유하는 비밀 키입니다. 요청이 운영자를 통해 프록시되었는지, 페이로드 값을 신뢰할 수 있는지 확인하는 데 사용됩니다.
DISABLE_SIGNUP — bool
가입이 비활성화되면 새 사용자를 만드는 유일한 방법은 초대를 통해서입니다. 기본값은 false이며 모든 가입이 활성화됩니다.
GOTRUE_EXTERNAL_EMAIL_ENABLED — bool
이메일 가입을 비활성화하려면 이 옵션을 사용하세요(사용자는 여전히 외부 OAuth 공급자를 통해 가입/로그인할 수 있습니다).
GOTRUE_EXTERNAL_PHONE_ENABLED — bool
전화 가입을 비활성화하려면 이 옵션을 사용하세요(사용자는 여전히 외부 OAuth 공급자를 통해 가입/로그인할 수 있습니다).
GOTRUE_RATE_LIMIT_HEADER — string
/token 엔드포인트에 대해 속도 제한을 적용할 헤더입니다. 이 헤더는 신뢰할 수 있는 업스트림 프록시(예: Kong 또는 Envoy)에 의해 설정될 것으로 예상됩니다. x-forwarded-for와 같은 헤더는 스푸핑이 가능하므로 클라이언트가 직접 제공할 때 속도 제한에 사용할 수 없습니다.
GOTRUE_RATE_LIMIT_EMAIL_SENT — string
다음 엔드포인트에서 시간당 전송되는 이메일 수를 제한합니다: /signup, /invite, /magiclink, /recover, /otp, /user.
GOTRUE_PASSWORD_MIN_LENGTH — int
최소 비밀번호 길이, 기본값은 6입니다.
GOTRUE_PASSWORD_REQUIRED_CHARACTERS — :로 구분된 문자 집합 문자열입니다. 비밀번호는 각 집합의 문자를 하나 이상 포함해야 승인됩니다. : 문자를 사용하려면 \로 이스케이프하세요.
GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED — bool
리프레시 토큰 순환이 활성화되면 인증은 폐기된 리프레시 토큰을 재사용하려는 악의적인 시도를 자동으로 감지합니다. 악의적인 시도가 감지되면 GoTrue는 해당 토큰에서 파생된 모든 토큰을 즉시 폐기합니다.
GOTRUE_SECURITY_REFRESH_TOKEN_REUSE_INTERVAL — string
이 설정은 GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED가 활성화된 경우에만 적용됩니다. 리프레시 토큰의 재사용 간격은 동시성 또는 오프라인 문제를 지원하기 위해 해당 간격 동안 리프레시 토큰을 여러 번 교환할 수 있게 합니다. 재사용 간격 동안 인증은 폐기된 토큰의 사용을 악의적인 시도로 간주하지 않고 단순히 하위 리프레시 토큰을 반환합니다.
이전에 폐기된 토큰만 재사용할 수 있습니다. 현재 유효한 리프레시 토큰보다 훨씬 이전의 오래된 리프레시 토큰을 사용하면 재사용 감지가 트리거됩니다.
GOTRUE_API_HOST=localhost PORT=9999 API_EXTERNAL_URL=http://localhost:9999
`API_HOST` - `string`
수신 대기할 호스트 이름입니다.
`PORT` (접두사 없음) / `API_PORT` - `number`
수신 대기할 포트 번호입니다. 기본값은 `8081`입니다.
`API_ENDPOINT` - `string` _다중 인스턴스 모드 전용_
Netlify가 이 API에 액세스할 수 있는 엔드포인트를 제어합니다.
`API_EXTERNAL_URL` - `string` **필수**
GoTrue에 액세스할 수 있는 URL입니다.
`REQUEST_ID_HEADER` - `string`
들어오는 요청에서 요청 ID를 상속하려면 이 값에 해당 이름을 지정하세요.
### 데이터베이스```properties
GOTRUE_DB_DRIVER=postgres
DATABASE_URL=root@localhost/auth
DB_DRIVER - string 필수
사용할 데이터베이스 방언을 선택합니다. 반드시 postgres여야 합니다.
DATABASE_URL (접두사 없음) / DB_DATABASE_URL - string 필수
데이터베이스 연결 문자열입니다.
GOTRUE_DB_MAX_POOL_SIZE - int
데이터베이스에 대한 최대 열린 연결 수를 설정합니다. 기본값은 0이며, 이는 "무제한" 연결 수와 동일합니다.
DB_NAMESPACE - string
모든 테이블 이름에 접두사를 추가합니다.
마이그레이션 참고 사항
마이그레이션은 ./auth를 실행할 때 자동으로 적용됩니다. 그러나 다음 방법을 통해 마이그레이션을 다시 실행할 수도 있습니다:
./auth migratedocker run --rm auth gotrue migrateLOG_LEVEL=debug # available without GOTRUE prefix (exception) GOTRUE_LOG_FILE=/var/log/go/auth.log
`LOG_LEVEL` - `string`
출력할 로그 수준을 제어합니다. `panic`, `fatal`, `error`, `warn`, `info`, `debug` 중에서 선택하세요. 기본값은 `info`입니다.
`LOG_FILE` - `string`
로그를 파일에 기록하려면 `log_file`을 유효한 파일 경로로 설정하세요.
### Observability
Auth에는 기본적인 관측 기능이 내장되어 있습니다. [OpenTelemetry](https://opentelemetry.io) 메트릭과 트레이스를 수집기로 내보낼 수 있습니다.
#### Tracing
트레이싱을 활성화하려면 다음 변수를 구성하세요:
`GOTRUE_TRACING_ENABLED` - `bool`
`GOTRUE_TRACING_EXPORTER` - `string` `opentelemetry`만 지원됩니다
수집기 또는 서비스에 대한 [OpenTelemetry Exporter](https://opentelemetry.io/docs/reference/specification/protocol/exporter/) 구성도 반드시 설정하세요.
예를 들어 [Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution)를 사용한다면 다음 표준 OpenTelemetry OTLP 변수를 설정해야 합니다:```
OTEL_SERVICE_NAME=auth
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443
OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=<API-KEY>,x-honeycomb-dataset=auth"
메트릭을 활성화하려면 다음 변수를 구성하세요:
GOTRUE_METRICS_ENABLED - boolean
GOTRUE_METRICS_EXPORTER - string, opentelemetry 및 prometheus만
지원됩니다.
또한 OpenTelemetry Exporter 구성을 수집기 또는 서비스에 맞게 구성해야 합니다.
prometheus exporter를 사용하는 경우, 서버 호스트와 포트를 다음 표준
OpenTelemetry 변수로 구성할 수 있습니다:
OTEL_EXPORTER_PROMETHEUS_HOST - IP 주소, 기본값 0.0.0.0
OTEL_EXPORTER_PROMETHEUS_PORT - 포트 번호, 기본값 9100
메트릭은 서버의 / 경로에서 내보내집니다.
opentelemetry exporter를 사용하는 경우, 메트릭은
수집기로 푸시됩니다.
예를 들어, Honeycomb.io 를 사용한다면 다음 표준 OpenTelemetry OTLP 변수를 설정해야 합니다:``` OTEL_SERVICE_NAME=auth OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443 OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=,x-honeycomb-dataset=auth"
Honeycomb.io는 메트릭을 수집하려면 유료 플랜이 필요합니다.
추적 또는 메트릭이 푸시되지 않는 문제를 디버그해야 하는 경우에는
`DEBUG=true`로 설정하면 OpenTelemetry SDK에서 더 많은 정보를 얻을 수 있습니다.
#### 사용자 정의 리소스 속성
OpenTelemetry 추적 또는 메트릭 내보내기를 사용할 때 사용자 정의
리소스 속성을 [표준 `OTEL_RESOURCE_ATTRIBUTES` 환경
변수](https://opentelemetry.io/docs/reference/specification/resource/sdk/#specifying-resource-information-via-an-environment-variable).
기본 속성인 `auth.version`은 빌드 버전을 포함하여 제공됩니다.
#### HTTP 경로 추적
Auth API에 대한 모든 HTTP 호출은 추적됩니다. 경로는 매개변수화된
경로 버전을 사용하며, 경로 매개변수의 값은
`http.route.params.<route-key>` 스팬 속성에서 확인할 수 있습니다.
예를 들어, 다음 요청은:```
GET /admin/users/4acde936-82dc-4552-b851-831fb8ce0927/
다음과 같이 추적됩니다:``` http.method = GET http.route = /admin/users/{user_id} http.route.params.user_id = 4acde936-82dc-4552-b851-831fb8ce0927
#### Go 런타임 및 HTTP 메트릭
모든 Go 런타임 메트릭이 노출됩니다. 일부 HTTP 메트릭도 기본적으로
수집됩니다.
### JSON 웹 토큰 (JWT)```properties
GOTRUE_JWT_SECRET=supersecretvalue
GOTRUE_JWT_EXP=3600
GOTRUE_JWT_AUD=netlify
JWT_SECRET - string required
JWT 토큰 서명에 사용되는 비밀 키입니다.
JWT_EXP - number
토큰이 유효한 시간(초)입니다. 기본값은 3600(1시간)입니다.
JWT_AUD - string
기본 JWT 대상(audience)입니다. 대상을 사용하여 사용자를 그룹화하세요.
JWT_ADMIN_GROUP_NAME - string
관리자 그룹의 이름입니다(활성화된 경우). 기본값은 admin입니다.
JWT_DEFAULT_GROUP_NAME - string
모든 새 사용자에게 할당할 기본 그룹입니다.
외부 인증을 위해 apple, azure, bitbucket, discord, facebook, figma, github, gitlab, google, keycloak, linkedin, notion, snapchat, spotify, slack, twitch, , 를 지원합니다.
각각을 별도로 구성하려면 external 아래의 키로 이름을 사용하세요.```properties
GOTRUE_EXTERNAL_GITHUB_ENABLED=true
GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=myappclientid
GOTRUE_EXTERNAL_GITHUB_SECRET=clientsecretvaluessssh
GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=http://localhost:3000/callback
외부 공급자는 필수가 아니지만, 활성화하려면 필요한 값을 반드시 입력해야 합니다.
`EXTERNAL_X_ENABLED` - `bool`
이 외부 공급자가 활성화되어 있는지 여부
`EXTERNAL_X_CLIENT_ID` - `string` **필수**
외부 공급자에 등록된 OAuth2 클라이언트 ID입니다.
`EXTERNAL_X_SECRET` - `string` **필수**
등록 시 외부 공급자가 제공한 OAuth2 클라이언트 시크릿입니다.
`EXTERNAL_X_REDIRECT_URI` - `string` **필수**
OAuth2 공급자가 `code` 및 `state` 값을 포함해 리디렉션할 URI입니다.
`EXTERNAL_X_URL` - `string`
권한 부여 및 액세스 토큰을 요청하는 URL을 구성하는 데 사용되는 기본 URL입니다. `gitlab` 및 `keycloak`에서 사용됩니다. `gitlab`의 경우 기본값은 `https://gitlab.com`입니다. `keycloak`의 경우 이 값을 인스턴스로 설정해야 합니다. 예: `https://keycloak.example.com/realms/myrealm`
#### 네트워크 강화
외부 인증 공급자를 구성하면 Auth가 해당 공급자의 권한 부여, 토큰 및 userinfo 엔드포인트로 아웃바운드 HTTP 요청을 보내게 됩니다. `GOTRUE_EXTERNAL_*` 설정 또는 관리자 API를 통해 공급자를 구성하는 것은 관리 작업이며, 이는 연결될 호스트와 URL을 신뢰한다는 의미입니다.
Auth가 실행되는 네트워크는 강화되어야 하며, 이러한 아웃바운드 연결이 `localhost`/루프백 주소나 클라우드 메타데이터 엔드포인트(예: `169.254.169.254`)와 같이 노출하지 않으려는 내부 전용 리소스에 도달할 수 없도록 해야 합니다. 이는 관리자가 구성하거나 검색 가능한 엔드포인트가 있는 공급자(예: 사용자 지정 OAuth/OIDC 공급자)에서 가장 중요합니다. 잘못 구성되었거나 악의적인 URL이 내부 인프라에 도달하는 데 사용될 수 있기 때문입니다.
#### Apple OAuth
Apple을 통한 외부 인증을 로컬에서 시도하려면 다음을 수행해야 합니다.
1. `/etc/hosts` 구성에서 localhost를 \<my_custom_dns \>로 매핑하세요.
2. [api.go](https://github.com/supabase/auth/blob/HEAD/internal/api/api.go)에서 `ListenAndServe`를 다음으로 교체하여 localhost에서 HTTPS 트래픽을 제공하도록 auth를 구성하세요. ```
func (a *API) ListenAndServe(hostAndPort string) {
log := logrus.WithField("component", "api")
path, err := os.Getwd()
if err != nil {
log.Println(err)
}
server := &http.Server{
Addr: hostAndPort,
Handler: a.handler,
}
done := make(chan struct{})
defer close(done)
go func() {
waitForTermination(log, done)
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
server.Shutdown(ctx)
}()
if err := server.ListenAndServeTLS("PATH_TO_CRT_FILE", "PATH_TO_KEY_FILE"); err != http.ErrServerClosed {
log.WithError(err).Fatal("http server listen failed")
}
}
이메일 전송은 필수가 아니지만, 비밀번호 복구를 위해 적극 권장됩니다. 활성화된 경우 아래의 필수 값을 제공해야 합니다.```properties GOTRUE_SMTP_HOST=smtp.mandrillapp.com GOTRUE_SMTP_PORT=587 GOTRUE_SMTP_USER=[email protected] GOTRUE_SMTP_PASS=correcthorsebatterystaple GOTRUE_SMTP_ADMIN_EMAIL=[email protected] GOTRUE_MAILER_SUBJECTS_CONFIRMATION="Please confirm"
`SMTP_ADMIN_EMAIL` - `string` **required**
보내는 모든 이메일의 `From` 이메일 주소입니다.
`SMTP_HOST` - `string` **required**
이메일을 전송할 메일 서버 호스트 이름입니다.
`SMTP_PORT` - `number` **required**
메일 서버에 연결할 포트 번호입니다.
`SMTP_USER` - `string`
메일 서버에서 인증이 필요한 경우 사용할 사용자 이름입니다.
`SMTP_PASS` - `string`
메일 서버에서 인증이 필요한 경우 사용할 비밀번호입니다.
`SMTP_MAX_FREQUENCY` - `number`
가입 확인 또는 비밀번호 재설정 이메일을 보내기 전에 반드시 경과해야 하는 최소 시간을 제어합니다. 값은 초 단위입니다. 기본값은 900(15분)입니다.
`SMTP_SENDER_NAME` - `string`
보낸 사람 이름을 설정합니다. 사용하지 않으면 기본값은 `SMTP_ADMIN_EMAIL`입니다.
`MAILER_AUTOCONFIRM` - `bool`
이메일 확인이 필요하지 않은 경우 이 값을 `true`로 설정할 수 있습니다. 기본값은 `false`입니다.
`MAILER_OTP_EXP` - `number`
이메일 링크 또는 OTP가 유효한 기간을 제어합니다.
`MAILER_URLPATHS_INVITE` - `string`
사용자 초대 이메일에서 사용할 URL 경로입니다. 기본값은 `/verify`입니다.
`MAILER_URLPATHS_CONFIRMATION` - `string`
가입 확인 이메일에서 사용할 URL 경로입니다. 기본값은 `/verify`입니다.
`MAILER_URLPATHS_RECOVERY` - `string`
비밀번호 재설정 이메일에서 사용할 URL 경로입니다. 기본값은 `/verify`입니다.
`MAILER_URLPATHS_EMAIL_CHANGE` - `string`
이메일 변경 확인 이메일에서 사용할 URL 경로입니다. 기본값은 `/verify`입니다.
`MAILER_SUBJECTS_INVITE` - `string`
사용자 초대에 사용할 이메일 제목입니다. 기본값은 `You've been invited`입니다.
`MAILER_SUBJECTS_CONFIRMATION` - `string`
가입 확인에 사용할 이메일 제목입니다. 기본값은 `Confirm your email address`입니다.
`MAILER_SUBJECTS_RECOVERY` - `string`
비밀번호 재설정에 사용할 이메일 제목입니다. 기본값은 `Reset your password`입니다.
`MAILER_SUBJECTS_MAGIC_LINK` - `string`
매직 링크 이메일에 사용할 이메일 제목입니다. 기본값은 `Your sign-in link`입니다.
`MAILER_SUBJECTS_EMAIL_CHANGE` - `string`
이메일 변경 확인에 사용할 이메일 제목입니다. 기본값은 `Confirm your new email address`입니다.
`MAILER_SUBJECTS_REAUTHENTICATION` - `string`
재인증에 사용할 이메일 제목입니다. 기본값은 `{{ .Token }} is your verification code`입니다.
`MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION` - `string`
비밀번호 변경 알림에 사용할 이메일 제목입니다. 기본값은 `Your password was changed`입니다.
`MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION` - `string`
이메일 변경 알림에 사용할 이메일 제목입니다. 기본값은 `Your email address was changed`입니다.
`GOTRUE_MAILER_SUBJECTS_PHONE_CHANGED_NOTIFICATION` - `string`
전화번호 변경 알림에 사용할 이메일 제목입니다. 기본값은 `Your phone number was changed`입니다.
`GOTRUE_MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION` - `string`
ID 연결 알림에 사용할 이메일 제목입니다. 기본값은 `A new sign-in method was linked to your account`입니다.
`GOTRUE_MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION` - `string`
ID 연결 해제 알림에 사용할 이메일 제목입니다. 기본값은 `A sign-in method was removed from your account`입니다.
`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION` - `string`
인증 수단 추가 알림에 사용할 이메일 제목입니다. 기본값은 `A new verification method was added to your account`입니다.
`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION` - `string`
인증 수단 제거 알림에 사용할 이메일 제목입니다. 기본값은 `A verification method was removed from your account`입니다.
`MAILER_TEMPLATES_INVITE` - `string`
사용자를 초대할 때 사용할 이메일 템플릿의 URL 경로입니다. (예: `https://www.example.com/path-to-email-template.html`)
`SiteURL`, `Email`, `ConfirmationURL` 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
<h2>You've been invited</h2>
<p>You've been invited to create an account. Follow the link below to accept.</p>
<p><a href="{{ .ConfirmationURL }}">Accept invitation</a></p>
MAILER_TEMPLATES_CONFIRMATION - string
가입 확인 시 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
SiteURL, Email, ConfirmationURL 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Follow the link below to confirm this email address and finish signing up.
``` `MAILER_TEMPLATES_RECOVERY` - `string`비밀번호 재설정 시 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
SiteURL, Email, ConfirmationURL 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
We received a request to reset your password. Follow the link below to choose a new one.
If you didn't request this, you can safely ignore this email.
``` `MAILER_TEMPLATES_MAGIC_LINK` - `string`매직 링크를 보낼 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
SiteURL, Email, ConfirmationURL 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Follow the link below to sign in. This link expires shortly and can only be used once.
``` `MAILER_TEMPLATES_EMAIL_CHANGE` - `string`이메일 주소 변경을 확인할 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
SiteURL, Email, NewEmail, ConfirmationURL 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Follow the link below to confirm {{ .NewEmail }} as your new email address.
If you didn't request this change, you can safely ignore this email.
``` `MAILER_TEMPLATES_REAUTHENTICATION` - `string`사용자를 재인증할 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Token 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Use the code below to verify your identity. It expires shortly.
{{ .Token }}
``` `MAILER_TEMPLATES_PASSWORD_CHANGED_NOTIFICATION` - `string`사용자의 비밀번호가 변경되었음을 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
The password for your account was recently changed.
If you didn't make this change, reset your password and contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_PASSWORD_CHANGED_ENABLED` - `bool`사용자의 비밀번호가 변경될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
MAILER_TEMPLATES_EMAIL_CHANGED_NOTIFICATION - string
사용자의 이메일이 변경되었음을 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email 및 OldEmail 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
The email address for your account was changed from {{ .OldEmail }} to {{ .Email }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_EMAIL_CHANGED_ENABLED` - `bool`사용자의 이메일이 변경될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
GOTRUE_MAILER_TEMPLATES_PHONE_CHANGED_NOTIFICATION - string
사용자의 전화번호가 변경되었음을 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email, Phone, OldPhone 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
The phone number for your account was changed from {{ .OldPhone }} to {{ .Phone }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_PHONE_CHANGED_ENABLED` - `bool`사용자의 전화번호가 변경될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
GOTRUE_MAILER_TEMPLATES_IDENTITY_LINKED_NOTIFICATION - string
로그인 방법이 사용자의 계정에 연결되었음을 사용자에게 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email 및 Provider 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Your {{ .Provider }} account was linked as a new sign-in method for {{ .Email }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_LINKED_ENABLED` - `bool`사용자 계정에 로그인 방법이 연결될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
GOTRUE_MAILER_TEMPLATES_IDENTITY_UNLINKED_NOTIFICATION - string
사용자 계정에서 로그인 방법이 제거되었음을 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email 및 Provider 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Your {{ .Provider }} account was removed as a sign-in method for {{ .Email }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_UNLINKED_ENABLED` - `bool`사용자 계정에서 로그인 방법이 제거될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_ENROLLED_NOTIFICATION - string
새로운 인증 방법이 사용자 계정에 추가되었음을 사용자에게 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email 및 FactorType 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Sign-in verification method {{ .FactorType }} was added to your account.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_MFA_FACTOR_ENROLLED_ENABLED` - `bool`새 인증 수단이 사용자 계정에 추가될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_UNENROLLED_NOTIFICATION - string
인증 수단이 사용자 계정에서 제거되었음을 사용자에게 알릴 때 사용할 이메일 템플릿의 URL 경로입니다. (예: https://www.example.com/path-to-email-template.html)
Email 및 FactorType 변수를 사용할 수 있습니다.
기본 콘텐츠(템플릿을 사용할 수 없는 경우):```html
Sign-in verification method {{ .FactorType }} was removed from your account.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_MFA_FACTOR_UNENROLLED_ENABLED` - `bool`사용자 계정에서 확인 방법이 제거될 때 알림 이메일을 보낼지 여부입니다. 기본값은 false입니다.
SMS_AUTOCONFIRM - bool
전화 확인이 필요하지 않은 경우 이 값을 true로 설정할 수 있습니다. 기본값은 false입니다.
SMS_MAX_FREQUENCY - number
다음 SMS OTP를 보내기 전에 경과해야 하는 최소 시간을 제어합니다. 값은 초 단위입니다. 기본값은 60(1분)입니다.
SMS_OTP_EXP - number
SMS OTP가 유효한 기간을 제어합니다.
SMS_OTP_LENGTH - number
전송되는 SMS OTP의 자릿수를 제어합니다.
SMS_PROVIDER - string
사용 가능한 옵션은 twilio, messagebird, textlocal, vonage입니다.
그런 다음 twilio 자격 증명을 사용할 수 있습니다:
SMS_TWILIO_ACCOUNT_SIDSMS_TWILIO_AUTH_TOKENSMS_TWILIO_MESSAGE_SERVICE_SID - twilio 발신자 휴대폰 번호로 설정할 수 있습니다.또는 대시보드에서 얻을 수 있는 Messagebird 자격 증명:
SMS_MESSAGEBIRD_ACCESS_KEY - Messagebird 액세스 키SMS_MESSAGEBIRD_ORIGINATOR - SMS 발신자(+ 기호가 포함된 Messagebird 전화번호 또는 회사 이름)활성화하면 CAPTCHA는 요청 본문에서 captcha_token 필드를 확인하고 CAPTCHA 제공자에게 검증 요청을 보냅니다.
SECURITY_CAPTCHA_ENABLED - string
captcha 미들웨어 활성화 여부
SECURITY_CAPTCHA_PROVIDER - string
현재 지원되는 옵션은 hCaptcha와 Turnstile뿐입니다.
SECURITY_CAPTCHA_SECRET - stringSECURITY_CAPTCHA_TIMEOUT - stringhcaptcha 또는 turnstile 계정에서 가져오세요.
SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION - bool
비밀번호 업데이트 시 재인증을 강제합니다.
GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED - bool
이 값을 사용하여 익명 로그인을 활성화/비활성화합니다.
GOTRUE_SECURITY_SB_FORWARDED_FOR_ENABLED - bool
Sb-Forwarded-For HTTP 요청 헤더를 사용하여 IP 주소 전달을 활성화합니다. 활성화하면 Auth는 이 헤더의 첫 번째 값을 IP 주소로 구문 분석하여 IP 주소 추적 및 속도 제한에 사용합니다. 이 기능을 활성화하기 전에 신뢰할 수 있는 클라이언트나 프록시에서만 전달되도록 하여 이 헤더를 완전히 신뢰할 수 있는지 확인하세요.
Auth는 다음 엔드포인트를 제공합니다:
이 auth 인스턴스에 대해 공개적으로 사용 가능한 설정을 반환합니다.```json { "external": { "apple": true, "azure": true, "bitbucket": true, "discord": true, "facebook": true, "figma": true, "github": true, "gitlab": true, "google": true, "keycloak": true, "linkedin": true, "notion": true, "slack": true, "snapchat": true, "spotify": true, "twitch": true, "twitter": true, "workos": true }, "disable_signup": false, "autoconfirm": false }
### **POST, PUT /admin/users/<user_id>**
지정된 `user_id`를 기준으로 사용자를 생성(POST)하거나 업데이트(PUT)합니다. `ban_duration` 필드는 다음 시간 단위를 허용합니다: "ns", "us", "ms", "s", "m", "h". 사용되는 형식에 대한 자세한 내용은 [`time.ParseDuration`](https://pkg.go.dev/time#ParseDuration)을 참조하세요.```js
headers:
{
"Authorization": "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" // requires a role claim that can be set in the GOTRUE_JWT_ADMIN_ROLES env var
}
body:
{
"role": "test-user",
"email": "[email protected]",
"phone": "12345678",
"password": "secret", // only if type = signup
"email_confirm": true,
"phone_confirm": true,
"user_metadata": {},
"app_metadata": {},
"ban_duration": "24h" or "none" // to unban a user
}
지정된 유형에 따라 해당 이메일 액션 링크를 반환합니다. 응답에는 그 밖에도 편의를 위해 액션 링크의 쿼리 매개변수가 별도의 JSON 필드로 포함됩니다 (해당 토큰이 생성되는 이메일 OTP와 함께).```js headers: { "Authorization": "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" // admin role required }
body: { "type": "signup" or "magiclink" or "recovery" or "invite" or "email_change_current" or "email_change_new", "email": "[email protected]", "password": "secret", // only if type = signup "data": { ... }, // only if type = signup "redirect_to": "https://supabase.io" // Redirect URL to send the user to after an email action. Defaults to SITE_URL.
}
반환```js
{
"action_link": "http://localhost:9999/verify?token=TOKEN&type=TYPE&redirect_to=REDIRECT_URL",
"email_otp": "EMAIL_OTP",
"hashed_token": "TOKEN",
"verification_type": "TYPE",
"redirect_to": "REDIRECT_URL",
...
}
이메일과 비밀번호로 새 사용자를 등록합니다.```json { "email": "[email protected]", "password": "secret" }
returns:```js
{
"id": "11111111-2222-3333-4444-5555555555555",
"email": "[email protected]",
"confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
// if sign up is a duplicate then faux data will be returned
// as to not leak information about whether a given email
// has an account with your service or not
전화번호와 비밀번호로 새 사용자를 등록하세요.```js { "phone": "12345678", // follows the E.164 format "password": "secret" }
반환값:```js
{
"id": "11111111-2222-3333-4444-5555555555555", // if duplicate sign up, this ID will be faux
"phone": "12345678",
"confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
AUTOCONFIRM이 활성화되어 있고 가입이 중복된 경우, 엔드포인트는 다음을 반환합니다:```json { "code": 400, "msg": "User already registered" }
### **POST /resend**
사용자가 기존 signup, sms, email_change 또는 phone_change OTP를 재전송할 수 있습니다.```json
{
"email": "[email protected]",
"type": "signup"
}
But maybe there is markdown content missing due to formatting? Need handle: If no source text provided, return empty. We cannot ask.```json { "phone": "12345678", "type": "sms" }
반환:```json
{
"message_id": "msgid123456"
}
이메일을 사용하여 새 사용자를 초대합니다.
이 엔드포인트는 Auth Bearer 헤더로 설정된 service_role 또는 supabase_admin JWT가 필요합니다:
예:```js headers: { "Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" }
Please provide the Markdown content to translate.```json
{
"email": "[email protected]"
}
반환값:```json { "id": "11111111-2222-3333-4444-5555555555555", "email": "[email protected]", "confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00", "created_at": "2016-05-15T19:53:12.368652374-07:00", "updated_at": "2016-05-15T19:53:12.368652374-07:00", "invited_at": "2016-05-15T19:53:12.368652374-07:00" }
### **POST /verify**
등록 또는 비밀번호 복구를 확인합니다. 유형은 `signup`, `recovery`, `invite`, `magiclink`, `email_change`, `sms` 또는 `phone_change`일 수 있으며,
`token`은 `/signup` 또는 `/recover`에서 반환된 토큰입니다.```json
{
"type": "signup",
"token": "confirmation-code-delivered-in-email"
}
password는 기존 비밀번호가 없는 경우 가입 확인을 위해 필요합니다.
반환 값:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token", "type": "signup | recovery | invite | magiclink | email_change | sms | phone_change" }
전화 가입 또는 SMS OTP를 검증합니다. Type은 `sms`로 설정해야 합니다.```json
{
"type": "sms",
"token": "confirmation-otp-delivered-in-sms",
"redirect_to": "https://supabase.io",
"phone": "phone-number-sms-otp-was-delivered-to"
}
반환:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }
### **GET /verify**
등록 또는 비밀번호 복구를 검증합니다. Type은 `signup`, `recovery`, `magiclink`, `invite` 또는 `email_change`일 수 있으며,
`token`은 `/signup`, `/recover` 또는 `/magiclink`에서 반환된 토큰입니다.
query params:```json
{
"type": "signup",
"token": "confirmation-code-delivered-in-email",
"redirect_to": "https://supabase.io"
}
사용자는 로그인 후 다음으로 리디렉션됩니다:``` SITE_URL/#access_token=jwt-token-representing-the-user&token_type=bearer&expires_in=3600&refresh_token=a-refresh-token&type=invite
애플리케이션은 fragment의 쿼리 파라미터를 감지하여 이를 사용해 세션을 설정해야 합니다 (supabase-js는 이를 자동으로 처리합니다)
`type` 파라미터를 사용하여 `invite` 또는 `recovery`의 경우 사용자를 비밀번호 설정 양식으로 리디렉션하거나,
`signup`의 경우 계정 확인/환영 메시지를 표시하거나 추가 온보딩 흐름으로 안내할 수 있습니다.
### **POST /otp**
일회용 비밀번호(OTP). 요청 본문에 "email" 또는 "phone" 키가 포함되어 있는지에 따라 사용자에게 매직 링크 또는 SMS OTP를 전달합니다.
`"create_user": true`인 경우, 사용자가 존재하지 않더라도 자동으로 가입되지 않습니다.```js
{
"phone": "12345678" // follows the E.164 format
"create_user": true
}
또는```js // exactly the same as /magiclink { "email": "[email protected]" "create_user": true }
반환:```json
{}
Magic Link. 이메일 주소를 기반으로 사용자에게 링크(예: /verify?type=magiclink&token=fgtyuf68ddqdaDd)를 전달하며, 사용자는 이 링크를 통해 access_token을 교환( redeem)할 수 있습니다.
기본적으로 Magic Link는 60초에 한 번만 전송할 수 있습니다.```json { "email": "[email protected]" }
반환:```json
{}
매직 링크를 클릭하면 <SITE_URL>#access_token=x&refresh_token=y&expires_in=z&token_type=bearer&type=magiclink로 리디렉션됩니다(/verify 참조).
비밀번호 복구. 이메일 주소를 기반으로 사용자에게 비밀번호 복구 메일을 전송합니다.
기본적으로 복구 링크는 60초에 한 번만 전송할 수 있습니다.```json { "email": "[email protected]" }
반환:```json
{}
현재 password 및 refresh_token grant 유형을 구현하는 OAuth2 엔드포인트입니다
query params:``` ?grant_type=password
body:```js
// Email login
{
"email": "[email protected]",
"password": "somepassword"
}
// Phone login
{
"phone": "12345678",
"password": "somepassword"
}
또는
쿼리 파라미터:``` grant_type=refresh_token
body:```json
{
"refresh_token": "a-refresh-token"
}
액세스 토큰을 획득하면 인증이 필요한 메서드에 액세스할 수 있습니다.
Authorization: Bearer YOUR_ACCESS_TOKEN_HERE 헤더를 설정하면 됩니다.
반환값:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }
### **GET /user**
로그인한 사용자의 JSON 객체를 가져옵니다 (인증 필요)
반환:```json
{
"id": "11111111-2222-3333-4444-5555555555555",
"email": "[email protected]",
"confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
사용자 업데이트(인증 필요). 이메일/비밀번호 변경 외에도 이 메서드를 사용하여 사용자 지정 데이터를 설정할 수 있습니다. 이메일을 변경하면 매직 링크가 전송됩니다.```json { "email": "[email protected]", "password": "new-password", "phone": "+123456789", "data": { "key": "value", "number": 10, "admin": false } }
반환값:```json
{
"id": "11111111-2222-3333-4444-5555555555555",
"email": "[email protected]",
"email_change_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"phone": "+123456789",
"phone_change_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
만약 GOTRUE_SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION이 활성화되면, 사용자는 먼저 재인증을 해야 합니다.```json
{
"password": "new-password",
"nonce": "123456"
}
### **GET /reauthenticate**
사용자의 이메일(선호) 또는 전화로 nonce를 전송합니다. 이 엔드포인트는 사용자가 먼저 로그인/인증되어 있어야 합니다. nonce가 성공적으로 전송되려면 사용자가 이메일 또는 전화번호를 보유해야 합니다.```js
headers: {
"Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO"
}
사용자를 로그아웃합니다(인증 필요).
이렇게 하면 사용자의 모든 리프레시 토큰이 취소됩니다. JWT 토큰은 만료될 때까지 무상태 인증(stateless auth)에 대해 계속 유효합니다.
외부 OAuth 제공자로부터 access_token을 가져옵니다.
쿼리 매개변수:``` provider=apple | azure | bitbucket | discord | facebook | figma | github | gitlab | google | keycloak | linkedin | notion | slack | snapchat | spotify | twitch | twitter | workos
scopes=<optional additional scopes depending on the provider (email and name are requested by default)>
provider로 리디렉션된 다음 `/callback`으로 리디렉션됩니다.
Apple 관련 설정은 다음을 참조하세요: <https://github.com/supabase/auth#apple-oauth>
### **GET /callback**
외부 provider는 이 엔드포인트로 리디렉션해야 합니다.
다음으로 리디렉션됩니다: `<GOTRUE_SITE_URL>#access_token=<access_token>&refresh_token=<refresh_token>&provider_token=<provider_oauth_token>&expires_in=3600&provider=<provider_name>`
추가 scope가 요청된 경우 `provider_token`이 채워집니다. 이를 사용하여 provider에서 추가 데이터를 가져오거나 해당 서비스와 상호작용할 수 있습니다.
twitterworkos