인증 방식

테스트 가능백엔드: https://api.advt-dev.voidx.ai

변경 사항

  • Bearer 방식에서 쿠키 방식으로 변경
  • 미들웨어 인증에서 DAL 인증으로 변경

인증 + DAL 구현

// lib/auth.ts
import "server-only";                     // 서버 전용 코드 보장
import { cache } from "react";            // 요청당 1회 실행 보장
import { cookies } from "next/headers";
import { redirect } from "next/navigation";

// JWT 페이로드에서 세션 정보 추출
// HttpOnly 쿠키로 XSS 공격 방지
export const getSession = cache(async () => {
  const cookieStore = await cookies();
  const token = cookieStore.get("access_token")?.value;
  if (!token) return null;

  // RS256 비대칭키 검증
  // 백엔드의 JWKS 엔드포인트에서 공개키 조회
  const session = parseJwtPayload(token);
  if (isTokenExpired(session)) return null;
  return session;
});

// 인증 필수 페이지용
// 미인증시 로그인 페이지로 리다이렉트
export const requireAuth = cache(async () => {
  const session = await getSession();
  if (!session) redirect("/auth-example/login");
  return session;
});

// lib/dal.ts - Data Access Layer
// 모든 데이터 접근 지점에서 인증 검증
// 미들웨어 대신 DAL에서 보안 처리 (CVE-2025-29927 대응)
export async function getDashboard() {
  await requireAuth();  // 인증 검증
  return fetchWithAuth("/api/v1/admin/dashboard");
}

// 페이지에서 사용
// app/auth-example/private/page.tsx
export default async function PrivatePage() {
  const data = await getDashboard();  // DAL 호출시 자동 인증 검증
  return <div>{data.total}</div>;
}

페이지

홈으로