«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

Clerk (프론트 인증 모듈 추천) 본문

스터디

Clerk (프론트 인증 모듈 추천)

행복한 수지아빠 2025. 2. 27. 22:15

https://clerk.com/

 

Clerk | Authentication and User Management

The easiest way to add authentication and user management to your application. Purpose-built for React, Next.js, Remix, and “The Modern Web”.

clerk.com

 

📌 Clerk란?

Clerk풀스택 애플리케이션을 위한 인증 및 사용자 관리 서비스입니다. 기존의 Firebase Authentication, Auth0, Supabase Auth와 비슷하지만, Next.js, React, Remix, Svelte 등 최신 웹 프레임워크와 긴밀하게 통합되어 개발 속도를 크게 단축시킬 수 있습니다.

Clerk는 사용자 인증, 역할 기반 접근 제어(RBAC), OAuth 소셜 로그인, 다중 세션 관리, 이메일/전화번호 인증 등을 간단하게 설정할 수 있도록 지원합니다.


🚀 Clerk의 주요 특징

✅ 1. 풀스택 인증 서비스

  • OAuth 소셜 로그인(Google, GitHub, Facebook 등)
  • 이메일/비밀번호 로그인
  • OTP(One-Time Password) 로그인 (이메일 & SMS)
  • Web3 지갑 로그인(Metamask 등)
  • 패스키(Passkeys) 및 WebAuthn(FIDO2) 지원

✅ 2. Next.js 및 React와 완벽한 통합

  • Clerk는 Next.js와 같은 최신 프레임워크에서 쉽게 설정 가능.
  • <SignIn/>, <UserButton/> 같은 UI 컴포넌트 기본 제공.

✅ 3. 다중 세션 및 멀티테넌시 지원

  • 한 사용자가 여러 개의 계정을 동시에 관리 가능.
  • 다중 조직(Organization) 관리 기능 포함.

✅ 4. 서버리스 환경과 완벽 호환

  • Vercel, Netlify, Firebase, Supabase, AWS Lambda 같은 서버리스 플랫폼과 호환.

✅ 5. RBAC(Role-Based Access Control) 및 팀 기능

  • 역할(Role) 및 권한(Permissions)을 설정하여 특정 사용자만 접근 가능하도록 구성.

✅ 6. 보안 강화

  • OAuth 2.0 및 OpenID Connect(OIDC) 지원.
  • 다중 요소 인증(MFA) 및 WebAuthn 지원.

🛠 Clerk 기본 사용법

📌 1. Clerk 설치 및 프로젝트 설정

npm install @clerk/clerk-react

또는 Next.js 프로젝트에서:

npm install @clerk/nextjs

📌 2. Clerk 개발 환경 설정

Clerk 대시보드에서 프로젝트를 생성한 후, .env.local 파일에 API 키를 추가:

NEXT_PUBLIC_CLERK_FRONTEND_API=your-clerk-frontend-api
CLERK_SECRET_KEY=your-clerk-secret-key

🏗️ Clerk의 주요 기능과 코드 예제

✅ 1. 로그인(Sign In) 및 회원가입(Sign Up)

Clerk는 SignIn 및 SignUp UI 컴포넌트를 기본 제공하여 쉽게 로그인/회원가입 기능을 추가할 수 있습니다.

🔹 로그인(SignIn) UI 추가 (Next.js)

import { SignIn } from "@clerk/nextjs";

export default function SignInPage() {
  return <SignIn />;
}

🔹 회원가입(SignUp) UI 추가

import { SignUp } from "@clerk/nextjs";

export default function SignUpPage() {
  return <SignUp />;
}

✅ 2. 로그인한 사용자 정보 가져오기

Clerk는 useUser 훅을 제공하여 로그인한 사용자 정보를 쉽게 가져올 수 있습니다.

import { useUser } from "@clerk/nextjs";

export default function UserProfile() {
  const { isSignedIn, user } = useUser();

  if (!isSignedIn) {
    return <p>로그인 필요</p>;
  }

  return (
    <div>
      <h2>환영합니다, {user.fullName}!</h2>
      <p>이메일: {user.primaryEmailAddress}</p>
    </div>
  );
}

✅ 3. 로그아웃 및 사용자 버튼 추가

Clerk는 <UserButton/> 컴포넌트를 제공하여 로그인, 프로필 및 로그아웃 기능을 자동으로 처리할 수 있습니다.

import { UserButton } from "@clerk/nextjs";

export default function Dashboard() {
  return (
    <div>
      <h1>대시보드</h1>
      <UserButton afterSignOutUrl="/" />
    </div>
  );
}

✅ 4. OAuth 소셜 로그인 추가

Clerk는 Google, GitHub, Facebook, Twitter, Apple 등의 OAuth 로그인을 기본 지원합니다.

🔹 Clerk 대시보드에서 OAuth 제공업체 활성화 후, <SignIn /> 컴포넌트 사용하면 자동으로 로그인 가능

<SignIn path="/sign-in" routing="path" signUpUrl="/sign-up" />

✅ 5. 역할 기반 접근 제어(RBAC)

Clerk에서는 특정 사용자만 특정 페이지에 접근하도록 제한할 수 있습니다.

import { useUser } from "@clerk/nextjs";
import { useRouter } from "next/router";

export default function AdminPage() {
  const { isSignedIn, user } = useUser();
  const router = useRouter();

  if (!isSignedIn || user?.publicMetadata.role !== "admin") {
    router.push("/");
    return null;
  }

  return <h1>관리자 페이지</h1>;
}

🔥 Clerk vs Firebase Authentication vs Auth0 vs Supabase Auth

기능 Clerk Firebase Auth Auth0 Supabase Auth

UI 컴포넌트 제공 ✅ 기본 제공 ❌ 직접 구현 필요 ✅ 일부 제공 ❌ 직접 구현 필요
Next.js 지원 ✅ 최적화 🔵 가능하지만 제한적 🔵 일부 기능 지원 🔵 직접 설정 필요
OAuth 소셜 로그인 ✅ 기본 제공 ✅ 가능 ✅ 가능 ✅ 가능
OTP 인증 ✅ 이메일 & SMS ✅ 이메일 & SMS ✅ 지원 ✅ 이메일 지원
RBAC (역할 기반 권한 관리) ✅ 기본 제공 ❌ 직접 구현 필요 ✅ 지원 ❌ 직접 구현 필요
멀티 세션 지원 ✅ 가능 ❌ 불가능 🔵 제한적 지원 ❌ 불가능
웹3 로그인 (Metamask 등) ✅ 지원 ❌ 불가능 🔵 일부 지원 ❌ 불가능

✅ Clerk를 선택해야 하는 경우

  • Next.js, React, Svelte 같은 최신 프레임워크에서 빠르게 인증을 구현하고 싶을 때.
  • OAuth, 이메일/비밀번호, OTP, Web3 로그인까지 통합된 인증 기능이 필요한 경우.
  • RBAC(권한 관리), 다중 세션, 멀티테넌시 등의 기능이 필요한 경우.

📌 Clerk 사용 흐름 정리

  1. Clerk 계정 생성 후 프로젝트 생성.
  2. 프론트엔드에 Clerk 패키지 설치 (@clerk/nextjs).
  3. 환경 변수 추가 (NEXT_PUBLIC_CLERK_FRONTEND_API).
  4. Clerk 컴포넌트 (<SignIn/>, <SignUp/>, <UserButton/>) 추가.
  5. 사용자 정보 가져오기 (useUser).
  6. OAuth 로그인, RBAC, 멀티 세션 등 추가 설정.

🎯 마무리

Clerk는 풀스택 인증을 손쉽게 구현할 수 있는 서비스로, Next.js 및 React 기반 프로젝트에서 최소한의 코드로 강력한 인증 기능을 추가할 수 있도록 설계되었습니다.

Firebase Auth나 Auth0보다 간편하게 사용할 수 있으며, Next.js 및 서버리스 환경과 최적화된 인증 솔루션을 찾는다면 Clerk가 가장 좋은 선택이 될 수 있습니다. 🚀