Cookies

쿠키는 세션 토큰, OAuth 상태 등의 데이터를 저장하는 데 사용됩니다. 모든 쿠키는 인증 옵션에서 제공한 secret 키를 사용하여 서명됩니다.

쿠키 접두사

기본적으로 Better Auth 쿠키는 ${prefix}.${cookie_name} 형식을 따릅니다. 기본 접두사는 "better-auth"입니다. 인증 옵션의 advanced 객체에서 cookiePrefix를 설정하여 접두사를 변경할 수 있습니다.

auth.ts
import { betterAuth } from "better-auth"

export const auth = betterAuth({
    advanced: {
        cookiePrefix: "my-app"
    }
})

사용자 정의 쿠키

모든 쿠키는 서버가 프로덕션 모드에서 실행될 때 httpOnlysecure입니다.

사용자 정의 쿠키 이름 및 속성을 설정하려면 인증 옵션의 advanced 객체에서 cookieOptions를 설정하면 됩니다.

기본적으로 Better Auth는 다음 쿠키를 사용합니다:

  • session_token: 세션 토큰 저장
  • session_data: 쿠키 캐시가 활성화된 경우 세션 데이터 저장
  • dont_remember: rememberMe가 비활성화된 경우 플래그 저장

플러그인도 데이터를 저장하기 위해 쿠키를 사용할 수 있습니다. 예를 들어 2단계 인증 플러그인은 two_factor 쿠키를 사용하여 2단계 인증 상태를 저장합니다.

auth.ts
import { betterAuth } from "better-auth"

export const auth = betterAuth({
    advanced: {
        cookies: {
            session_token: {
                name: "custom_session_token",
                attributes: {
                    // 사용자 정의 쿠키 속성 설정
                }
            },
        }
    }
})

서브도메인 간 쿠키 공유

때로는 서브도메인 간에 쿠키를 공유해야 할 수 있습니다. 예를 들어 auth.example.com에서 인증하면 app.example.com에서도 같은 세션에 액세스할 수 있어야 합니다.

domain 속성은 어느 도메인이 쿠키에 액세스할 수 있는지 제어합니다. 루트 도메인(예: example.com)으로 설정하면 모든 서브도메인에서 쿠키에 액세스할 수 있습니다. 보안을 위해 다음 지침을 따르세요:

  1. 필요한 경우에만 서브도메인 간 쿠키를 활성화하세요
  2. 필요한 가장 구체적인 범위로 도메인을 설정하세요 (예: .example.com 대신 app.example.com)
  3. 이러한 쿠키에 잠재적으로 액세스할 수 있는 신뢰할 수 없는 서브도메인을 주의하세요
  4. 신뢰할 수 없는 서비스에 대해 별도의 도메인을 사용하는 것을 고려하세요 (예: app.company.com vs status.company.com)
auth.ts
import { betterAuth } from "better-auth"

export const auth = betterAuth({
    advanced: {
        crossSubDomainCookies: {
            enabled: true,
            domain: "app.example.com", // 도메인
        },
    },
    trustedOrigins: [
        'https://example.com',
        'https://app1.example.com',
        'https://app2.example.com',
    ],
})

보안 쿠키

기본적으로 쿠키는 서버가 프로덕션 모드에서 실행될 때만 보안됩니다. 인증 옵션의 advanced 객체에서 useSecureCookiestrue로 설정하여 쿠키를 항상 보안으로 강제할 수 있습니다.

auth.ts
import { betterAuth } from "better-auth"

export const auth = betterAuth({
    advanced: {
        useSecureCookies: true
    }
})

On this page