> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Next.js 빠른 시작 가이드

> Didit 인증 세션을 서버에서 관리하는 Next.js 설정 계획입니다. PKCE 콜백, HttpOnly 쿠키, 보호된 요청의 권한 부여를 다룹니다.

> [!WARNING]
>
> 인증 기능은 새로 추가되었습니다. `@didit-protocol/auth-nextjs`와 코어 서버 검증기는 릴리스에 따라 달라집니다. 패키지 릴리스 전에는 미들웨어 import 경로, 쿠키 이름, `auth()` 반환 형태가 확정되어 있지 않습니다. 액세스 토큰은 ES256 JWT이므로 애플리케이션의 JWKS로 검증하십시오. 세션이 아직 활성 상태인지 확인해야 할 때는 `GET session/`을 호출하십시오.

## 서버에서 세션 유지하기

서버 렌더링 애플리케이션에 맞게 다음과 같이 변경하여 [JavaScript 빠른 시작](https://docs.didit.me/ko/authentication/quickstarts/javascript.md)에 설명된 호스팅 흐름을 사용하십시오. 여기서 말하는 라우트 이름은 여러분이 구현하는 애플리케이션 라우트이며, Didit API 엔드포인트가 아닙니다.

| 애플리케이션 라우트 | 역할 |
| - | - |
| 로그인 시작 | state와 S256 PKCE를 생성하고, 트랜잭션을 단기 서버 세션에 저장한 뒤 `{origin}/sign-in`으로 리디렉션합니다. |
| 등록된 콜백 | state와 만료 시각을 검증하고, 트랜잭션을 한 번만 사용하고 폐기한 뒤, `token/`에서 코드를 교환하고 토큰을 서버에 저장합니다. |
| 보호된 페이지 또는 API 라우트 | 세션 쿠키를 읽고, 최종 사용자의 액세스 토큰을 JWKS로 검증하거나, 폐기 상태를 즉시 반영해야 할 때는 `session/`에서 확인합니다. 그런 다음 요청된 작업을 해당 사용자에 대해 승인합니다. |
| 갱신 | 세션별로 갱신 요청을 직렬화하고, `token/`을 호출하며, 토큰 쌍을 원자적으로 교체합니다. |
| 로그아웃 | CSRF로부터 보호되는 변경 요청으로, `session/`을 폐기하고 애플리케이션 세션을 지웁니다. |

무작위로 생성한 애플리케이션 세션 참조값만 `Secure`, `HttpOnly`, `SameSite=Lax` 속성을 가진 쿠키에 담아 보내고, 범위가 지정된 경로를 사용하십시오. 적절한 만료 시간을 설정하고, 로그인 후에는 세션 참조값을 교체하십시오. Didit 리프레시 토큰을 렌더링된 props, 클라이언트 컴포넌트 또는 브라우저 스토리지에 노출하지 마십시오. 토큰 응답과 콜백 응답에는 `Cache-Control: no-store`를 사용하십시오.

레이아웃 검사나 미들웨어 검사만으로 충분하다고 생각하지 마십시오. 데이터에 접근하거나 변경 작업을 수행할 때마다 권한을 확인하십시오. 쿠키로 인증되는 변경 요청은 CSRF로부터 보호하십시오. 로그인 후 이동할 대상은 설정된 목적지로만 허용하고, 쿼리 문자열의 임의 `returnTo` URL은 절대 허용하지 마십시오.

## 패키지 릴리스 미리보기

예정된 패키지에는 미들웨어, 서버 측 `auth()`, 콜백 라우트, 서버 렌더링용 HttpOnly 쿠키 지원이 추가될 예정입니다. 코어 `/server` 엔트리는 캐시된 JWKS를 사용하는 `verifyToken()`을 제공하도록 계획되어 있습니다. 검증된 릴리스에서 내보낸 심볼이 제공될 때까지 이 심볼들을 사용하지 마십시오. 그때까지는 [토큰 및 JWKS](https://docs.didit.me/ko/authentication/tokens-and-jwks.md)에 설명된 대로 JOSE 라이브러리를 사용해 토큰을 직접 검증하십시오.

## 다른 제품 연결하기

인증 세션은 서버에서 생성하고, 범위가 지정된 모니터링 토큰도 서버에서 발급하십시오. `vendor_data`는 검증된 사용자 매핑에서 도출하십시오. 브라우저에는 인증 세션 URL 또는 수명이 짧은 SDK 토큰만 반환하십시오. `DIDIT_API_KEY`는 공개 환경 변수에 넣지 마십시오.

인증에는 기존 [웹 인증 SDK](https://docs.didit.me/ko/integration/web-sdks/javascript-sdk.md)를, 모니터링에는 [트랜잭션 제출 가이드](https://docs.didit.me/ko/transaction-monitoring/sdk-transaction-submission.md)를 사용하십시오. 둘 다 인증 세션 관리자가 아닙니다.

릴리스 전에 콜백 재전송, 잘못된 state, 만료된 state, 갱신 경합, 폐기된 세션, CSRF 거부, 로그아웃을 테스트하십시오. 검증 계약은 [토큰 및 JWKS](https://docs.didit.me/ko/authentication/tokens-and-jwks.md)를 참조하십시오.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.