Skip to content
Migrating from NextAuth.js v4? Read our migration guide.
가이드Integrating Third Party Backends

타사 백엔드와 통합하기

프로바이더를 통해 로그인할 때, 받은 OAuth 토큰을 사용해 타사 API에 인증할 수 있습니다. 이 토큰들은 해당 프로바이더를 지원하는 백엔드에 요청을 승인하는 데 사용할 수 있습니다.

예를 들어:

  • GitHub의 access_token은 GitHub API에 접근할 수 있게 해줍니다.
  • Keycloak, oidc-provider와 같은 자체 관리형 프로바이더는 커스텀 타사 백엔드에 대한 인증에 사용할 수 있습니다.

토큰을 세션에 저장하기

토큰은 jwt 콜백의 account 매개변수에서 사용할 수 있습니다.
토큰을 세션에 저장하려면, 먼저 토큰에 연결해야 합니다.

jwt({ token, trigger, session, account }) {
  if (account?.provider === "my-provider") {
    return { ...token, accessToken: account.access_token }
  }
  // ...
}

API 요청 시 토큰에 접근하려면, Auth.js 세션에서 사용할 수 있도록 만들어야 합니다.

async session({ session, token }) {
  session.accessToken = token.accessToken
  return session
}

토큰을 사용하여 인증된 API 요청하기

OAuth 토큰은 일반적으로 Authorization: Bearer <> 헤더로 첨부됩니다. 이 헤더는 라우트 핸들러와 같이 서버 측에서 첨부하는 것이 좋습니다.

export async function handler(request: NextRequest) {
  const session = await auth()
  return await fetch(/*<your-backend-url>/api/authenticated/greeting*/, {
    headers: { "Authorization":  `Bearer ${session?.accessToken}` }
  })
  // ...
}

백엔드 설정: 프로바이더를 통해 요청 인증하기

여러분의 백엔드 프레임워크 문서를 참고하여 들어오는 액세스 토큰을 검증하는 방법을 확인하세요. 아래는 Express.js를 사용한 예제로, Keycloak 인스턴스를 활용한 코드입니다.

const app = express()
const jwtCheck = jwt({
  secret: jwks.expressJwtSecret({
    cache: true,
    rateLimit: true,
    jwksRequestsPerMinute: 5,
    jwksUri:
      "https://keycloak.authjs.dev/realms/master/protocol/openid-connect/certs",
  }),
  issuer: "https://keycloak.authjs.dev/realms/master",
  algorithms: ["RS256"],
})
app.get("*", jwtCheck, (req, res) => {
  const name = req.auth?.name ?? "unknown name"
  res.json({ greeting: `Hello, ${name}!` })
})
// ...

리소스

  • 다양한 백엔드 프레임워크에 대한 추가 예제는 여기에서 확인할 수 있습니다.
  • 클라이언트 앱을 타사 API와 통합하는 방법에 대한 전체 예제는 next-auth-example에서 확인할 수 있습니다.
  • Keycloak - 모던 애플리케이션과 서비스를 위한 오픈 소스 인증 및 접근 관리
  • oidc-provider - Node.js용 OpenID Certified™ OAuth 2.0 인증 서버 구현
Auth.js © Balázs Orbán and Team - 2025