본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

entra-emulator

0

entra-emulator는 Microsoft Entra ID(Azure AD)를 로컬에서 에뮬레이트하는 단일 Go 바이너리입니다.

에뮬레이터

소개

entra-emulator는 Microsoft Entra ID(Azure AD)를 로컬에서 에뮬레이트하는 단일 Go 바이너리입니다. MSAL 호환 OIDC/OAuth 2.0 v2.0 엔드포인트, 최소한의 읽기 전용 Microsoft Graph, 관리 REST API를 제공하여 클라우드 테넌트 없이도 로그인, 토큰 획득, 보호된 API 호출을 개발할 수 있습니다. 로컬 개발 전용 도구로, calvinchengx가 개발했으며 Apache-2.0 라이선스로 배포됩니다.

상세정보

인증 흐름 지원

  • Authorization Code + PKCE (S256/plain)
  • Client Credentials (/.default, 앱 역할 자동 부여)
  • 갱신 토큰 회전 및 재사용 시 family-revocation
  • Device Code (RFC 8628, 사용자 승인 페이지 포함)
  • 프론트채널 로그아웃, OIDC UserInfo

연합 및 로그인 방법

  • SAML 2.0 SP-initiated SSO 및 WS-Federation passive sign-in
  • 계정 선택기/비밀번호 로그인
  • 패스키(FIDO2/WebAuthn) 등록 및 인증

토큰 및 Graph

  • 실제 RS256 서명된 JWT, Entra v2.0 클레임 형식(tid, oid, scp/roles, pairwise sub, ver: “2.0”, client_info)
  • JWKS(키 ID = RFC 7638 thumbprint)로 검증 가능
  • 선택적 클레임 및 그룹 클레임(Entra 스타일 오버로드 포함)
  • Graph: /v1.0/me, /users, /groups 등 @odata 봉투 및 $top/$skiptoken 페이징

관리 API

  • 사용자, 그룹(멤버십 포함), 앱 등록(리디렉션 URI, 시크릿, 스코프, 앱 역할) CRUD
  • seed/reset, 상태 확인, 인증서 다운로드

Windows (winget)

  1. 명령 프롬프트에서 winget install calvinchengx.entra-emulator 실행
  2. 설치 후 entra-emulator version으로 확인

macOS/Linux (Homebrew)

  1. brew install calvinchengx/tap/entra-emulator
  2. entra-emulator version으로 확인

Docker

docker run -p 8443:8443 -v entra-emulator-data:/app/data ghcr.io/calvinchengx/entra-emulator:latest

직접 실행

  1. GitHub 릴리스에서 바이너리 다운로드 또는 go build ./cmd/entra-emulator
  2. 실행: ./entra-emulator
  3. 기본 주소: https://localhost:8443 (health: https://localhost:8443/health)

첫 실행 시 ./data/ 디렉토리에 SQLite 저장소, 자체 서명 TLS 인증서, RSA 서명 키가 생성됩니다. 하위 도메인을 사용하려면 ./entra-emulator hosts --apply로 호스트 파일을 업데이트하거나 ORIGIN_MODE=compat 환경 변수를 설정하여 모든 요청을 https://localhost:8443으로 처리할 수 있습니다.

Q: entra-emulator는 어떻게 설치하나요?

A: Windows에서는 winget install calvinchengx.entra-emulator, macOS/Linux에서는 brew install calvinchengx/tap/entra-emulator로 설치할 수 있습니다. Docker를 사용할 수도 있습니다.

Q: 기본 포트는 무엇인가요?

A: 기본 포트는 8443이며, PORT 환경 변수로 변경할 수 있습니다.

Q: 프로덕션에서 사용할 수 있나요?

A: 아니요. 이 도구는 로컬 개발 및 테스트 전용이며, 보안이나 성능 보장이 없습니다.

시스템 요구사항

Windows, macOS, Linux에서 실행 가능한 Go 바이너리입니다. Windows에서는 winget으로 설치할 수 있으며, Docker 이미지도 제공됩니다. x64 및 arm64 아키텍처를 지원합니다.