tom · 2026.5.27 13:23 · 조회 2
Logto (로그토)
Logto는 개발자와 제품 팀을 위한 오픈소스 아이덴티티 인프라(Identity Infrastructure) 솔루션입니다. 인증(Authentication)과 인가(Authorization), 사용자 관리(User Management)를 하나의 통합된 플랫폼으로 제공하며, Auth0나 Firebase Authentication과 같은 상용 서비스의 오픈소스 대안으로 주목받고 있습니다.
개요
| 항목 | 내용 |
|---|---|
| 라이선스 | MPL-2.0 (오픈소스) |
| 언어 | TypeScript (Node.js 기반) |
| 지원 프로토콜 | OpenID Connect (OIDC), OAuth 2.0 |
| 배포 방식 | 셀프 호스팅(Self-hosted) / Logto Cloud (관리형 SaaS) |
| 공식 사이트 | logto.io |
| GitHub | github.com/logto-io/logto |
| 최초 릴리스 | 2022년 |
Logto는 복잡한 인증 시스템을 직접 구현하는 대신, 검증된 표준 프로토콜(OIDC/OAuth 2.0) 위에 구축된 완성도 높은 플랫폼을 활용하여 빠르게 인증을 도입할 수 있도록 설계되었습니다.
핵심 기능
인증 (Authentication)
Logto는 다양한 인증 방식을 지원합니다.
- 이메일/비밀번호 로그인: 전통적인 이메일 기반 회원가입 및 로그인
- 전화번호 SMS 인증: OTP(일회용 비밀번호)를 이용한 전화번호 로그인
- 매직 링크(Passwordless): 이메일로 발송되는 일회용 링크를 통한 비밀번호 없는 로그인
- 소셜 로그인: Google, GitHub, Apple, Discord, Kakao, Naver 등 40개 이상의 소셜 제공자 지원
- 엔터프라이즈 SSO: SAML 2.0 및 OIDC 기반의 기업 SSO(Okta, Azure AD, Google Workspace 등)
- 다중 인증(MFA): TOTP 기반 인증 앱(Google Authenticator 등), WebAuthn(패스키), 백업 코드 지원
- 패스키(Passkey): FIDO2/WebAuthn 기반 생체 인증 지원
인가 (Authorization)
- RBAC(역할 기반 접근 제어): 사용자에게 역할(Role)을 부여하고, 역할마다 권한(Permission/Scope) 정의
- 조직(Organizations): 멀티 테넌트(Multi-tenant) 앱을 위한 조직 개념 지원. 조직별 역할과 권한 설정 가능
- API 리소스 보호: OAuth 2.0 리소스 서버 모델 기반으로 API 엔드포인트 접근 제어
사용자 관리 (User Management)
- 관리 콘솔(Admin Console): 웹 기반 GUI에서 사용자 조회, 생성, 수정, 비밀번호 재설정, 계정 정지 등 관리
- Management API: RESTful API를 통한 프로그래밍 방식 사용자 관리
- 사용자 프로파일: 표준 OIDC 클레임 외 커스텀 데이터(custom_data) 저장 지원
- 사용자 가져오기: 기존 시스템에서 사용자 데이터 마이그레이션
커스터마이징
- 로그인 화면(Sign-in Experience): 로고, 색상, 다크 모드, 언어, 약관 링크 등 브랜딩 커스터마이징
- 커스텀 CSS: 로그인 UI에 직접 CSS 적용 가능
- 커스텀 도메인: 자체 도메인으로 인증 엔드포인트 제공
- 다국어 지원: 30개 이상의 언어 기본 제공
아키텍처
Logto는 다음과 같은 구성 요소로 이루어져 있습니다.
- OIDC 서버: 표준 OpenID Connect 프로바이더 역할.
/oidc엔드포인트를 통해 토큰 발급, 사용자 정보 제공 - Admin API: Management API 엔드포인트(
/api). 사용자, 앱, 역할 등 모든 리소스 관리 - Sign-in Experience: 로그인·회원가입·MFA 등 사용자 대면 UI (React 기반 SPA)
- PostgreSQL: 모든 사용자 데이터, 설정, 토큰 등을 저장하는 주 데이터베이스
- Redis (선택): 세션 캐시 및 성능 최적화에 활용
SDK 지원
Logto는 주요 플랫폼과 프레임워크를 위한 공식 SDK를 제공합니다.
| 플랫폼 | 지원 SDK |
|---|---|
| 웹 프론트엔드 | JavaScript (Vanilla), React, Vue, Angular, Next.js, Nuxt |
| 모바일 | iOS (Swift), Android (Kotlin), Flutter, React Native, Expo |
| 백엔드 | Node.js, Python, Go, PHP, Java, .NET |
| 서버 사이드 | Next.js (App Router), Express, Django, FastAPI |
모든 SDK는 OIDC 표준을 따르므로, 공식 SDK가 없는 환경에서도 표준 OIDC 라이브러리를 사용하여 연동할 수 있습니다.
배포 방식
Logto Cloud (관리형 서비스)
Logto가 직접 운영하는 클라우드 서비스입니다. 인프라 관리 없이 즉시 사용할 수 있으며, 무료 플랜(Free Tier)으로 시작할 수 있습니다.
- Free 플랜: MAU(월간 활성 사용자) 50,000명까지 무료, 핵심 기능 포함
- Pro 플랜: 고급 기능(조직, 엔터프라이즈 SSO, 커스텀 도메인 등) 추가
- Enterprise 플랜: SLA, 전용 지원, 커스텀 계약
셀프 호스팅 (Self-hosted)
Docker 또는 Docker Compose를 이용하여 자체 인프라에 배포할 수 있습니다.
# Docker Compose로 빠른 시작
docker run \
--name logto \
-p 3001:3001 \
-p 3002:3002 \
-e TRUST_PROXY_HEADER=1 \
-e DB_URL=postgresql://... \
svhd/logto:latest
- 포트 3001: 인증 엔드포인트 (사용자 대면)
- 포트 3002: 관리 콘솔 및 Management API
주요 개념
테넌트 (Tenant)
Logto의 최상위 격리 단위입니다. 하나의 테넌트는 독립된 사용자 풀, 앱, 설정을 가집니다. 클라우드에서는 개발용/프로덕션용 테넌트를 분리하여 관리할 수 있습니다.
애플리케이션 (Application)
Logto에 연동하는 클라이언트를 나타냅니다. 애플리케이션 유형에 따라 인증 흐름이 달라집니다.
| 앱 유형 | 설명 | OAuth 흐름 |
|---|---|---|
| SPA | React, Vue 등 싱글 페이지 앱 | Authorization Code + PKCE |
| Traditional Web | 서버 사이드 렌더링 앱 | Authorization Code |
| Native | iOS, Android 모바일 앱 | Authorization Code + PKCE |
| M2M | 서비스 간 통신 (백엔드→백엔드) | Client Credentials |
조직 (Organization)
멀티 테넌트 SaaS 앱에서 각 고객사(테넌트)를 표현하는 개념입니다. 하나의 Logto 테넌트 안에서 여러 조직을 만들고, 사용자는 여러 조직에 속할 수 있습니다. 조직마다 독립적인 RBAC 설정이 가능합니다.
커넥터 (Connector)
소셜 로그인, SMS, 이메일 등 외부 서비스와의 연동을 담당하는 플러그인 단위입니다. Logto는 40개 이상의 공식 커넥터를 제공하며, 커스텀 커넥터 개발도 지원합니다.
Auth0와의 비교
| 항목 | Logto | Auth0 |
|---|---|---|
| 오픈소스 | ✅ (MPL-2.0) | ❌ |
| 셀프 호스팅 | ✅ | ❌ (Deploy 플랜만 가능) |
| 무료 MAU | 50,000 | 7,500 |
| 멀티 테넌트(Organizations) | ✅ | ✅ (유료) |
| 엔터프라이즈 SSO | ✅ | ✅ (유료) |
| MFA | ✅ | ✅ |
| 패스키 | ✅ | ✅ |
| Management API | ✅ | ✅ |
| 한국어 지원 | ✅ | 제한적 |
빠른 시작 예시 (React)
# SDK 설치
npm install @logto/react
// App.tsx
import { LogtoProvider, LogtoConfig } from '@logto/react';
const config: LogtoConfig = {
endpoint: 'https://your-tenant.logto.app',
appId: 'your-app-id',
};
function App() {
return (
<LogtoProvider config={config}>
<YourApp />
</LogtoProvider>
);
}
// 로그인/로그아웃 버튼
import { useLogto } from '@logto/react';
function AuthButton() {
const { isAuthenticated, signIn, signOut } = useLogto();
return isAuthenticated
? <button onClick={() => signOut('/')}>로그아웃</button>
: <button onClick={() => signIn('http://localhost:3000/callback')}>로그인</button>;
}
커뮤니티와 생태계
- 공식 문서: docs.logto.io — 한국어 포함 다국어 지원
- GitHub: 활발한 오픈소스 기여, Star 9,000+ (2024년 기준)
- Discord 커뮤니티: 실시간 지원 및 토론
- 블로그: 인증/보안 관련 기술 아티클 정기 발행
사용 시 고려사항
- PostgreSQL 필수: 셀프 호스팅 시 PostgreSQL 14 이상 필요
- Node.js 환경: Logto Core는 Node.js 기반으로, 서버 실행 환경 필요
- HTTPS 권장: 프로덕션 환경에서는 반드시 HTTPS 설정 필요
- 버전 관리: 활발한 개발로 버전 업그레이드 주기가 빠르므로, 마이그레이션 가이드 확인 권장
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.