티스토리 뷰

반응형

 

✅ Credentials Provider – 사용자 정의 로그인 (아이디/비밀번호 등)

Credentials Provider는 사용자가 직접 정의한 방식으로 로그인할 수 있도록 지원합니다.
예: 사용자명 + 비밀번호, 2단계 인증, 지문/보안키(YubiKey 등)

📌 기존에 자체 인증 시스템이 있는 경우에 적합합니다.


🛠 설정 예시 (pages/api/auth/[...nextauth].ts)

import CredentialsProvider from "next-auth/providers/credentials"

export default NextAuth({
  providers: [
    CredentialsProvider({
      name: 'Credentials',
      credentials: {
        username: { label: "Username", type: "text", placeholder: "jsmith" },
        password: { label: "Password", type: "password" },
      },
      async authorize(credentials, req) {
        const res = await fetch("https://your-api.com/auth", {
          method: 'POST',
          body: JSON.stringify(credentials),
          headers: { "Content-Type": "application/json" },
        })

        const user = await res.json()

        if (res.ok && user) return user
        return null
      }
    })
  ]
})

💡 핵심 포인트 요약

반응형

항목 설명

credentials 로그인 폼에 표시할 필드 정의 (username, password, etc.)
authorize() 실제 로그인 검증 함수. 유효 시 사용자 객체 반환, 실패 시 null
req 요청 객체. IP주소 등 추가 정보 활용 가능
user { id, name, email } 등 사용자 정보가 담긴 객체여야 함

⚠️ 중요 주의사항

  • JWT 기반 세션(strategy: "jwt") 필수
    → Credentials Provider는 DB에 사용자 정보를 저장하지 않기 때문
  • 데이터베이스 저장 없이 Stateless 인증 방식으로 동작
  • 보안 검증 로직은 반드시 authorize() 내부에서 직접 구현해야 함

📋 주요 옵션

옵션 설명 필수

id 고유 식별자 (기본: "credentials")
name 로그인 버튼에 표시할 이름
type "credentials"로 고정
credentials 로그인 필드 구성 (username, password 등)
authorize() 로그인 처리 함수

 

NextAuth credentials, 아이디 비밀번호 로그인, 사용자 정의 인증, Next.js 로그인 백엔드 연동, authorize 함수 예제, JWT 기반 인증, 보안 로그인 구현, NextAuth 로그인 커스터마이징, 로그인 API 연동, SEO 최적화 10개


 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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 29 30
글 보관함
반응형