> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 인증

로그인 방법, 세션, 계정 보안.

## 실제 계정 생성 및 확인

인증은 누가 앱을 사용하고 있는지 증명하는 것을 의미합니다. Postgres를 시작하고 먼저 데이터베이스 가이드를 사용하여 마이그레이션을 실행한 다음 웹 서버를 실행 상태로 둡니다. http://localhost:3000/auth,를 열고 이메일/비밀번호 가입을 선택하고 이름, 이메일, 비밀번호를 입력하고 제출하세요. 첫 번째 테스트를 위해 EMAIL_PROVIDER=local를 유지하세요.

흐름이 이메일 코드를 요청하면 다른 브라우저 탭에서 http://localhost:3000/mail-preview를 열고 해당 주소에 대한 가장 최근 메시지를 찾아 해당 코드를 로그인 양식에 다시 복사합니다. 만료된 경우 새 코드를 요청하세요. 이러한 메시지는 로컬 보낼 편지함에 남아 있습니다. 외부 받은편지함을 반복해서 확인해도 찾을 수 없습니다. 로그아웃한 다음 다시 로그인하여 데이터베이스 지원 계정이 작동하는지 확인하세요.

가입 시 데이터베이스 연결 또는 테이블 누락 오류가 보고되면 소셜 로그인을 활성화하는 대신 데이터베이스 설정을 완료하세요. Google, GitHub, Apple, X 및 Microsoft 버튼에는 자체 공급자 애플리케이션 및 콜백 설정이 필요합니다. 공급자 가이드가 완료된 후에만 활성화하십시오. Better Auth는 기본 엔진으로 제공되며 로컬 이메일 로그인을 위해 유료 인증 계정이 필요하지 않습니다.

[계정을 만들기 전에 Postgres를 시작하세요](https://supastack.dev/ko/docs/web/database.md)

[이메일 로그인 코드 사용 및 문제 해결](https://supastack.dev/ko/docs/web/setup-ai.md)

[Google 로그인 구성](https://supastack.dev/ko/docs/web/setup-oauth.md)

[Google 로그인 추가](https://supastack.dev/ko/docs/web/google-sign-in.md)

[GitHub 로그인 추가](https://supastack.dev/ko/docs/web/github-sign-in.md)

[Apple 로그인 추가](https://supastack.dev/ko/docs/web/apple-sign-in.md)


## 활성화할 로그인 방법 선택

기반에는 이메일/비밀번호, OTP, 구성 가능한 소셜 인증이 포함됩니다. Better Auth가 신원과 세션을 소유하고, 애플리케이션이 프로바이더 구성과 OTP 트랜잭션 전송을 구성합니다.

구성한 소셜 프로바이더만 활성화하세요. 프로바이더 클라이언트 시크릿과 인증 시크릿은 서버에 둡니다.


## 신원을 워크스페이스에 연결

인증된 핸들러는 워크스페이스 레코드에 닿기 전에 세션 상태를 해석합니다. 워크스페이스 프로비저닝은 멱등해야 하며 라이프사이클 후크를 반복해도 소유권 레코드가 중복 생성되지 않아야 합니다.


## 세션 동작 검증

로그인, 유효하지 않거나 만료된 OTP, 일회용 소비, 로그아웃, 거부된 익명 액세스를 테스트하세요. 메모리 어댑터 테스트는 핸들러 의미를 커버합니다. 프로덕션 데이터베이스 영속화와 실제 프로바이더 콜백은 별도의 수용이 필요합니다.


## 설치 및 설정

Better Auth가 기본 엔진입니다(AUTH_PROVIDER=better-auth). Auth.js 엔진은 이를 표준으로 삼는 팀을 위해 제공됩니다. 활성화된 메서드는 프로바이더별로 선언됩니다: 이메일/비밀번호, 트랜잭션 메일로 전달되는 일회용 코드, Google·Apple·GitHub·Microsoft·Twitter 소셜 로그인.

각 소셜 프로바이더는 AUTH_<PROVIDER>_ENABLED 플래그와 해당 client id·secret으로 켜집니다. 인증 시크릿, 프로바이더 시크릿, 세션 서명 키는 서버 전용 설정입니다.

```
AUTH_PROVIDER=better-auth
AUTH_SECRET=generate-a-long-random-value
AUTH_GOOGLE_ENABLED=true
GOOGLE_CLIENT_ID=…
GOOGLE_CLIENT_SECRET=…
```


## 구현 워크플로

/auth 표면은 구성된 메서드를 렌더링하고, 서버는 auth-runtime에서 엔진을 조합하며 보호된 경계마다 세션을 해석합니다. 첫 로그인 성공은 멤버의 개인 워크스페이스를 멱등적으로 프로비저닝합니다 — 반복된 라이프사이클 훅이 두 번째 소유권 레코드를 만들어서는 안 됩니다.

계정 보안은 /settings/security에 있습니다: 비밀번호 변경, 활성 세션, 빌드가 활성화한 패스키. 세션 복원, 로그아웃 시 폐기, 워크스페이스 간 거부는 UI 상태가 아닌 서버 강제 동작으로 유지하세요.


## 검증 및 문제 해결

로그인, 유효하지 않거나 만료된 OTP 코드, 단회 소비, HTTPS 오리진의 패스키 세리머니, 소셜 콜백 복귀, 로그아웃, 익명 거부를 검증합니다. 콜백을 테스트하기 전에 각 프로바이더의 리다이렉트 URI를 등록하고, 폐기된 세션이 보호된 작업을 계속 수행할 수 없는지 확인하세요.


## 다음

[조직 및 초대](https://supastack.dev/ko/docs/web/organizations.md)
