Supabase Auth를 사용하여 ‘Sign in with Your App’ 구축하기
Source: Dev.to

당신은 “Google로 로그인” 및 **“GitHub으로 로그인”**을 무수히 사용해 왔습니다.
하지만 Supabase 프로젝트가 바로 아이덴티티 제공자가 된다면 어떨까요? 오늘은 Supabase Auth에 OAuth 2.1 및 OpenID Connect 서버 기능을 추가하여 프로젝트를 완전한 아이덴티티 제공자로 전환합니다.
이를 통해 강력한 새로운 가능성이 열립니다:
- 모델 컨텍스트 프로토콜(MCP)을 통해 앱을 통해 인증하는 AI 에이전트
- 당신의 플랫폼 위에서 구축하는 서드파티 개발자들
- 파트너 통합이 API에 안전하게 접근
- 엔터프라이즈 싱글 사인온
모두 이미 신뢰하고 있는 검증된 인증 인프라를 그대로 사용합니다.
왜 우리가 이것을 만들었는가
즉각적인 촉매제? Model Context Protocol (MCP) 인증. AI 에이전트와 LLM 도구가 보편화됨에 따라 서비스와 인증할 표준화된 방법이 필요합니다. MCP는 그 표준으로 부상했으며 OAuth 2.1을 기반으로 합니다. 이제 여러분의 Supabase 프로젝트가 이러한 AI 도구가 인증할 신원 제공자가 될 수 있습니다.
하지만 적용 분야는 AI를 훨씬 넘어섭니다:
- 제3자 개발자 생태계 – 파트너가 여러분의 플랫폼과 통합되는 앱을 구축하도록 허용
- 파트너 API 접근 – 외부 서비스에 대한 안전한 접근 권한 부여
- “Powered by [Your App]” – 사용자가 기존 플랫폼 계정을 사용해 파트너 애플리케이션에 로그인하도록 지원
- 엔터프라이즈 SSO – ID 토큰, UserInfo 엔드포인트, 조직 단일 로그인 등을 포함한 완전한 OpenID Connect 지원
다른 개발자나 서비스가 사용자 데이터에 안전하게 접근해야 하는 플랫폼을 구축하고 있다면, OAuth 2.1 서버 기능이 이제 여러분의 Supabase 프로젝트에 내장되어 있습니다.
만들 수 있는 것
Supabase Auth를 OAuth 2.1 제공자로 사용하면 다음을 구현할 수 있습니다.
AI 및 자동화를 위한
- Supabase 프로젝트를 통해 사용자를 인증하는 MCP 서버
- 적절한 권한 부여를 통해 사용자 데이터를 안전하게 접근하는 AI 에이전트
- 애플리케이션 생태계에 통합된 LLM 도구
개발자 플랫폼을 위한
- “Sign in with [Your App]” 를 제공하는 서드파티 앱
- 세밀한 접근 제어가 가능한 파트너 통합
- OAuth 토큰을 이용한 개발자 API 접근
- 플랫폼 위에 구축된 마켓플레이스 앱
엔터프라이즈를 위한
- ID 토큰 및 UserInfo 엔드포인트를 포함한 OpenID Connect 싱글 사인‑온(SSO)
- 서비스 전반에 걸친 중앙 집중식 아이덴티티 관리
- 표준을 준수하는 엔터프라이즈 인증
- 규정 준수를 지원하는 감사 로그
작동 방식: 전체 그림
Supabase Auth는 OAuth 2.1 with OpenID Connect (OIDC), 즉 인증 및 신원을 위한 최신 보안 표준을 구현합니다. 핵심은 PKCE(Proof Key for Code Exchange)를 사용한 인증 코드 흐름입니다.
- 인증 코드 흐름 – 서버‑사이드 앱 및 네이티브 애플리케이션에 가장 안전한 OAuth 흐름.
- PKCE – 인증 코드 가로채기 공격을 방지합니다.
- 액세스 토큰 – 표준 Supabase 클레임(
user_id,role)과client_id와 같은 OAuth‑전용 클레임을 포함하는 JWT. - ID 토큰 – OIDC 흐름을 위한 사용자 프로필 정보를 담은 표준화된 신원 토큰.
- UserInfo 엔드포인트 – 클라이언트가 사용자 데이터를 조회할 수 있게 합니다.
- 리프레시 토큰 – 재인증 없이 장기 세션을 유지할 수 있게 합니다.
- JWKS 엔드포인트 – 제3자가 토큰을 검증할 수 있도록 공개키 인프라를 제공합니다.
가장 좋은 점은? 기존 Supabase 보안 모델이 OAuth에도 자연스럽게 확장된다는 것입니다: 행 수준 보안(Row‑Level Security, RLS) 정책이 일반 세션 토큰과 마찬가지로 OAuth 액세스 토큰에도 적용됩니다.
Source: …
기존 인증 스택과 함께 사용
이 구현의 가장 강력한 측면 중 하나는 이미 사용 중인 Supabase Auth 기능과 얼마나 매끄럽게 통합되는가 입니다. 사용자가 OAuth 흐름을 통해 인증하면, Supabase Auth의 기존 메서드들을 그대로 사용할 수 있습니다:
- 비밀번호 인증
- 매직 링크
- 소셜 제공자 (Google, GitHub 등)
- 다중 인증 (MFA)
- 전화 인증
타사 통합은 기존 인증 보안의 혜택을 그대로 누리면서 별도로 재구축할 필요가 없습니다.
커스텀 액세스 토큰 훅
Custom Access Token Hooks을 사용해 사용자 토큰에 커스텀 클레임을 추가하고 있나요? OAuth 토큰에서도 동일하게 작동합니다. 클라이언트별 클레임을 주입하거나, 커스텀 권한을 추가하거나, 필요한 토큰 커스터마이징 로직을 구현할 수 있습니다. 일반 인증 토큰에서 제공하던 유연성이 OAuth에도 확장됩니다.
OAuth 토큰을 활용한 RLS 정책
RLS 정책은 OAuth 액세스 토큰에도 자동으로 적용됩니다. 토큰에는 익숙한 user_id와 role 클레임 외에도, 요청을 수행하는 OAuth 클라이언트를 식별하는 client_id 클레임이 포함됩니다.
-- 모바일 앱에 사용자 프로필 읽기 권한 부여
CREATE POLICY "Mobile app can read profiles"
ON profiles FOR SELECT
USING (
(auth.uid() = user_id)
AND ((auth.jwt() ->> 'client_id') = 'mobile-app-client-id')
);
-- 타사 분석 대시보드에 메트릭 읽기 전용 권한 부여
CREATE POLICY "Analytics dashboard can read metrics"
ON user_metrics FOR SELECT
USING (
(auth.uid() = user_id)
AND ((auth.jwt() ->> 'client_id') = 'analytics-dashboard-client-id')
);
MCP Authentication
Supabase Auth는 Model Context Protocol의 OAuth 2.1 인증 사양을 완전히 준수합니다. 귀하의 Supabase 프로젝트는 /.well-known/oauth-authorization-server에서 표준 OAuth 인증 서버 메타데이터를 노출하여 인증 엔드포인트, 토큰 엔드포인트 및 기능을 자동으로 발견할 수 있게 합니다. MCP 클라이언트는 OAuth 2.1 동적 클라이언트 등록을 사용하여 자신을 동적으로 등록할 수 있습니다.
Supabase 프로젝트를 아이덴티티 제공자로 전환할 준비가 되셨나요? 🚀
MCP Integration (no manual configuration required)
실제로 이것이 의미하는 바는 다음과 같습니다: MCP‑호환 AI 도구를 Supabase 프로젝트의 인증 URL에 지정하면 나머지는 자동으로 처리됩니다. 도구는 엔드포인트를 탐색하고, 클라이언트로 등록하며, OAuth 흐름을 시작하고 토큰을 획득합니다. AI 에이전트는 사용자를 대신해 인증하고, 모든 RLS 정책이 자동으로 적용됩니다. 사용자는 동의 화면을 보고 접근을 승인하면, AI 도구는 정의한 권한 그대로 사용자를 대신해 동작합니다. 비밀번호가 노출되지 않으며, 커스텀 API 래퍼가 필요 없습니다.
우리는 아직 MCP를 시작한 단계에 불과합니다. Supabase에서 직접 MCP 서버를 구축하는 것을 더욱 쉽게 만들기 위해 작업 중이며, 여러분이 사랑하는 개발자 경험을 AI‑에이전트 통합에도 제공하고 있습니다.
시작하기
Supabase 프로젝트에서 OAuth 2.1을 설정하려면 Supabase 대시보드 또는 Management API를 통해 OAuth 클라이언트를 등록하는 것부터 시작합니다.
- 클라이언트 등록 – 허용된 리디렉션 URI를 구성하고
client_id를 받습니다. - 인증 흐름 구축 – OAuth 인증 요청을 받는 엔드포인트를 만들고, 사용자 인증(기존 Supabase Auth 방법 사용), 동의 UI 제공, 그리고 Supabase Auth와 함께 승인을 확인합니다.
- 행 수준 보안 정책 업데이트 – 접근 권한을 부여할 때 RLS 규칙이
client_id클레임을 고려하도록 합니다.
구성이 완료되면 Supabase 프로젝트는 AI 에이전트, 타사 앱, 엔터프라이즈 SSO 솔루션을 위한 완전한 OAuth 2.1 및 OpenID Connect 제공자 역할을 할 수 있습니다.