
# 빠른 시작

각 빠른 시작은 하나의 프레임워크를 빈 프로젝트에서 시작해, 유효한 KeenAuth 액세스 토큰만 허용하는 API 또는 사용자가 로그인할 수 있는 웹 앱까지 구성합니다. 모든 빠른 시작은 SDK 테스트 키트로 오프라인에서 실행되는 테스트가 포함된 실행 가능한 예제에서 가져오므로, 이 페이지의 코드는 테스트가 검증하는 코드입니다.

## API 보호

| 프레임워크 | 빠른 시작 |
|---|---|
| Go `net/http` | [Go API 보호](/docs/quickstarts/go) |
| Node.js Express | [Express API 보호](/docs/quickstarts/express) |
| Python FastAPI | [FastAPI API 보호](/docs/quickstarts/fastapi) |
| Python Django | [Django API 보호](/docs/quickstarts/django) |

네 가지 API 빠른 시작은 같은 API를 구축합니다. 공개 엔드포인트, 유효한 액세스 토큰이 필요한 엔드포인트, 그리고 `messages:read` 스코프까지 필요한 엔드포인트가 포함됩니다. 이 빠른 시작들은 설정을 환경 변수에서만 읽습니다.

| 변수 | 의미 |
|---|---|
| `KEENAUTH_ISSUER` | 환경의 발급자입니다. 예: `https://your-environment.eu.keenauth.app` |
| `KEENAUTH_AUDIENCE` | API의 식별자이며, 액세스 토큰의 대상(audience)입니다. |
| `PUBLIC_BASE_URL` | 클라이언트가 호출하는 URL입니다. 필수이며, `https`(`http`은 `localhost`에만 해당)입니다. |

## 사용자 로그인

| 프레임워크 | 빠른 시작 |
|---|---|
| Next.js (App Router) | [Next.js 앱에 로그인 추가](/docs/quickstarts/nextjs) |
| React 단일 페이지 앱 (Vite) | [React 단일 페이지 앱에 로그인 추가](/docs/quickstarts/react) |
| React Router (framework mode) | [React Router 앱에 로그인 추가](/docs/quickstarts/react-router) |
| Laravel | [Laravel 앱에 로그인 추가](/docs/quickstarts/laravel) |
| Spring Boot | [Spring Boot 앱에 로그인 추가](/docs/quickstarts/spring-boot) |
| ASP.NET Core | [ASP.NET Core 앱에 로그인 추가](/docs/quickstarts/dotnet) |

Next.js 앱은 OAuth 클라이언트이며 모든 토큰을 서버에서 보관합니다. React Router 앱도 마찬가지이며, 표준 OpenID Connect 클라이언트 `openid-client`를 사용합니다. React 단일 페이지 앱은 공개 클라이언트입니다. 토큰은 브라우저 메모리에 보관되며 DPoP 키에 바인딩됩니다. 다른 웹 앱은 프레임워크의 표준 OpenID Connect 클라이언트 라이브러리를 사용하고, 모든 토큰을 서버 측 세션에 보관합니다. 모든 앱은 환경 변수에서 설정을 읽고(각 페이지 참조) 사용자의 액세스 토큰으로 보호된 API를 호출합니다.

Fastify와 Flask는 같은 미들웨어를 사용합니다. [미들웨어로 API 보호](/docs/sdk/protect-api)를 참조하십시오.
