ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฐ์ํ
๐ Auth0 OAuth Provider ๊ฐ์
Auth0๋ OAuth 2.0 ๋ฐ OpenID Connect๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ธ์ฆ ์๋น์ค์
๋๋ค.
NextAuth.js์ ์ฐ๋ํ์ฌ ๋ค์ํ ๋ก๊ทธ์ธ ๋ฐฉ์์ ๊ฐํธํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
๐ ๏ธ ๊ธฐ๋ณธ ์ค์ ์์ (pages/api/auth/[...nextauth].ts)
import NextAuth from "next-auth"
import Auth0Provider from "next-auth/providers/auth0"
export default NextAuth({
providers: [
Auth0Provider({
clientId: process.env.AUTH0_CLIENT_ID,
clientSecret: process.env.AUTH0_CLIENT_SECRET,
issuer: process.env.AUTH0_ISSUER,
}),
],
})
๐ ํ๊ฒฝ ๋ณ์ ์ค์ (.env)
AUTH0_CLIENT_ID=your-auth0-client-id
AUTH0_CLIENT_SECRET=your-auth0-client-secret
AUTH0_ISSUER=https://your-tenant.auth0.com
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-nextauth-secret
๐ Auth0 ์ ํ๋ฆฌ์ผ์ด์ ์ค์
๋ฐ์ํ
- Auth0 Dashboard์ ๋ก๊ทธ์ธ
- Applications → Create Application ํด๋ฆญ
- Regular Web Application ์ ํ
- Callback URL:
- http://localhost:3000/api/auth/callback/auth0
- Allowed Logout URL:
- http://localhost:3000
- Allowed Web Origins:
- http://localhost:3000
๐บ๏ธ ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
async function jwt({ token, account }) {
if (account?.provider === "auth0") {
token.accessToken = account.access_token
}
return token
}
์ธ์ ์ ํฌํจ์ํค๊ธฐ
async function session({ session, token }) {
session.accessToken = token.accessToken
return session
}
๐ง๐ป ์ฌ์ฉ์ ์ ๋ณด ํ์
import { useSession } from "next-auth/react"
export default function Profile() {
const { data: session } = useSession()
return (
<>
<p>Signed in as {session?.user?.name}</p>
<p>Access Token: {session?.accessToken}</p>
</>
)
}
โ ๏ธ ์ฃผ์์ฌํญ
- Auth0์ ๋๋ฉ์ธ(issuer) ์ค์ ์ด ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด ์ธ์ฆ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ๋ฐ๋์ https://your-tenant.auth0.com ํ์์ ์ง์ผ์ผ ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ID์ ์ํฌ๋ฆฟ์ ํ๊ฒฝ ๋ณ์๋ก ๊ด๋ฆฌํ์ฌ ๋ณด์์ ๊ฐํํ์ธ์.
๐ ์ถ๊ฐ ๊ธฐ๋ฅ
- Custom Claims: Auth0 ๋์๋ณด๋์์ ์ฌ์ฉ์ ํ๋กํ์ ์ปค์คํ ํด๋ ์ ์ถ๊ฐ ๊ฐ๋ฅ
- Role ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด: Auth0์ ์ญํ (Role) ๊ธฐ๋ฅ์ ์ฌ์ฉํด ๊ด๋ฆฌ
NextAuth Auth0, Auth0 OAuth ์ค์ , Next.js ๋ก๊ทธ์ธ ๊ตฌํ, Auth0 Client ID ์ค์ , Auth0 JWT ํ ํฐ ๊ด๋ฆฌ, ์ฌ์ฉ์ ์ธ์ ๊ด๋ฆฌ, NextAuth ํ๋ก๋ฐ์ด๋ ์ค์ , Auth0 ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ, OAuth2 ์ธ์ฆ ์ฒ๋ฆฌ, SEO ์ต์ ํ 10๊ฐ
'framework > NextAuth' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ ๏ธ Azure AD B2C OAuth Provider ๊ฐ์ (0) | 2025.05.14 |
---|---|
๐ ๏ธ Authentik OAuth Provider ๊ฐ์ (0) | 2025.05.13 |
๐ ๏ธ Atlassian OAuth Provider ๊ฐ์ (0) | 2025.05.09 |
๐ Apple OAuth Provider ๊ฐ์ (0) | 2025.05.08 |
โ 42 School OAuth Provider ๊ฐ์ (0) | 2025.05.07 |
โป ์ด ํฌ์คํ
์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค.
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- nextJS
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก ํธ์๋๋ฉด์
- App Router
- llm
- nodejs
- AI์ฑ๋ด
- JAX
- seo ์ต์ ํ 10๊ฐ
- Webpack
- Prisma
- ์น๊ฐ๋ฐ
- Next.js
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- Docker
- fastapi
- ํ๋ก ํธ์๋
- NestJS
- Ktor
- PostgreSQL
- Python
- gatsbyjs
- SEO์ต์ ํ
- kotlin
- ๋ฅ๋ฌ๋
- CI/CD
- ๋ฐฑ์๋๊ฐ๋ฐ
- REACT
- SEO ์ต์ ํ
- rag
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
๊ธ ๋ณด๊ดํจ
๋ฐ์ํ