Azure AD Provider
⚠️
더 이상 사용되지 않음 - Microsoft는 이 제품을 Microsoft Entra ID로 리브랜딩했으며, 모든 지원 작업은 해당 IdP로 이전될 예정입니다. 여러분도 해당 프로바이더로 마이그레이션하는 것을 권장합니다.
리소스
설정
콜백 URL
https://example.com/api/auth/callback/azure-ad
환경 변수
AUTH_AZURE_AD_ID
AUTH_AZURE_AD_SECRET
AUTH_AZURE_AD_TENANT_ID
설정
/auth.ts
import NextAuth from "next-auth"
import AzureAd from "next-auth/providers/azure-ad"
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [AzureAd],
})
특정 Active Directory 사용자에게 접근 권한을 부여하는 방법:
- https://portal.azure.com/에서 “Azure Active Directory”를 검색하고 조직을 선택합니다.
- 왼쪽 메뉴에서 “앱 등록”으로 이동하여 새 앱을 등록합니다.
- “이 애플리케이션 또는 API에 접근할 수 있는 사용자” 옵션에 주의하세요.
- 이 설정을 통해 특정 유형의 사용자 계정에만 접근 권한을 제한할 수 있습니다.
- 선택 가능한 옵션은 다음과 같습니다:
- 현재 테넌트만
- 모든 Azure 테넌트
- 모든 Azure 테넌트 및 개인 Microsoft 계정(Skype, Xbox, Outlook.com 등)
- 리디렉션 URL을 입력할 때는
https://yourapplication.com/api/auth/callback/azure-ad
를 사용하거나, 개발 환경에서는http://localhost:3000/api/auth/callback/azure-ad
를 사용합니다. - 앱 등록이 완료되면 “클라이언트 자격 증명”에서 클라이언트 비밀 키를 생성합니다.
- “API 권한”을 클릭한 후 “관리자 동의 부여…”를 선택하여 테넌트에 User.Read 접근 권한을 허용합니다.
- 다음 정보를 복사합니다:
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
- 클라이언트 비밀 키(값)
.env.local
파일에 다음 항목을 추가합니다:
AUTH_AZURE_AD_CLIENT_ID=<여기에 애플리케이션(클라이언트) ID를 붙여넣으세요>
AUTH_AZURE_AD_CLIENT_SECRET=<여기에 생성된 클라이언트 비밀 키 값을 붙여넣으세요>
AUTH_AZURE_AD_TENANT_ID=<여기에 테넌트 ID를 붙여넣으세요>
이 설정은 테넌트가 common
인증 엔드포인트를 사용하도록 기본값으로 설정합니다. 자세한 내용은 여기를 참조하세요.
애플리케이션이 테넌트뿐만 아니라 모든 Microsoft 사용자로부터도 인증 요청을 받도록 하려면 AUTH_AZURE_AD_TENANT_ID에 “common”을 추가합니다. 이렇게 하면 테넌트 인증을 “건너뛰게” 됩니다.
AUTH_AZURE_AD_TENANT_ID=common
Azure AD는 프로필 사진을 URL 대신 ArrayBuffer로 반환합니다. 따라서 프로바이더가 이를 base64로 인코딩된 이미지 문자열로 변환하여 반환합니다. 자세한 내용은 다음을 참조하세요: https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#examples. 기본 이미지 크기는 48x48로 설정되어 있으며, 이는 세션이 JWT로 저장될 경우 공간 부족 문제를 방지하기 위함입니다.
pages/api/auth/[...nextauth].js
파일에서 AzureAD
항목을 찾거나 추가합니다:
import AzureADProvider from "next-auth/providers/azure-ad"
providers: [
AzureADProvider({
clientId: process.env.AZURE_AD_CLIENT_ID,
clientSecret: process.env.AZURE_AD_CLIENT_SECRET,
tenantId: process.env.AZURE_AD_TENANT_ID,
}),
]