Cookies
쿠키는 세션 토큰, OAuth 상태 등의 데이터를 저장하는 데 사용됩니다. 모든 쿠키는 인증 옵션에서 제공한 secret 키를 사용하여 서명됩니다.
쿠키 접두사
기본적으로 Better Auth 쿠키는 ${prefix}.${cookie_name} 형식을 따릅니다. 기본 접두사는 "better-auth"입니다. 인증 옵션의 advanced 객체에서 cookiePrefix를 설정하여 접두사를 변경할 수 있습니다.
import { betterAuth } from "better-auth"
export const auth = betterAuth({
advanced: {
cookiePrefix: "my-app"
}
})사용자 정의 쿠키
모든 쿠키는 서버가 프로덕션 모드에서 실행될 때 httpOnly 및 secure입니다.
사용자 정의 쿠키 이름 및 속성을 설정하려면 인증 옵션의 advanced 객체에서 cookieOptions를 설정하면 됩니다.
기본적으로 Better Auth는 다음 쿠키를 사용합니다:
session_token: 세션 토큰 저장session_data: 쿠키 캐시가 활성화된 경우 세션 데이터 저장dont_remember:rememberMe가 비활성화된 경우 플래그 저장
플러그인도 데이터를 저장하기 위해 쿠키를 사용할 수 있습니다. 예를 들어 2단계 인증 플러그인은 two_factor 쿠키를 사용하여 2단계 인증 상태를 저장합니다.
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)으로 설정하면 모든 서브도메인에서 쿠키에 액세스할 수 있습니다. 보안을 위해 다음 지침을 따르세요:
- 필요한 경우에만 서브도메인 간 쿠키를 활성화하세요
- 필요한 가장 구체적인 범위로 도메인을 설정하세요 (예:
.example.com대신app.example.com) - 이러한 쿠키에 잠재적으로 액세스할 수 있는 신뢰할 수 없는 서브도메인을 주의하세요
- 신뢰할 수 없는 서비스에 대해 별도의 도메인을 사용하는 것을 고려하세요 (예:
app.company.comvsstatus.company.com)
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 객체에서 useSecureCookies를 true로 설정하여 쿠키를 항상 보안으로 강제할 수 있습니다.
import { betterAuth } from "better-auth"
export const auth = betterAuth({
advanced: {
useSecureCookies: true
}
})