ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

 

๐ŸŒ 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 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •

๋ฐ˜์‘ํ˜•
  1. Auth0 Dashboard์— ๋กœ๊ทธ์ธ
  2. ApplicationsCreate Application ํด๋ฆญ
  3. Regular Web Application ์„ ํƒ
  4. Callback URL:
  5. http://localhost:3000/api/auth/callback/auth0
  6. Allowed Logout URL:
  7. http://localhost:3000
  8. Allowed Web Origins:
  9. 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๊ฐœ


 

โ€ป ์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•