시작하기
OAuth 제공자 설정 가이드
Authon에서 각 OAuth 제공자를 설정하기 위한 단계별 안내입니다. 모든 제공자에서 Client ID 와 Client Secret을 발급받아 Authon 대시보드의 Providers 페이지에 붙여넣으세요.
리디렉션 / 콜백 URL 패턴:
https://api.authon.dev/v1/auth/oauth/redirect
중요: 모든 OAuth 제공자는 하나의 동일한 Redirect URI를 공유합니다. 제공자별 콜백 URL을 따로 사용하지 마세요.
Google
Google OAuth 2.0 설정은 Google Cloud Console.
2
왼쪽 메뉴에서 APIs & Services → OAuth consent screen으로 이동합니다. 사용자 유형은 External을 선택하고 앱 이름, 지원 이메일, 개발자 연락처를 입력합니다.
3
APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID를 생성하고 애플리케이션 유형으로 Web application을 선택합니다.
4
Authorized redirect URIs에 Authon 콜백 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
5
Create를 눌러 생성한 뒤 팝업에 표시되는 Client ID와 Client Secret을 복사합니다.
필드 매핑:
Client ID←OAuth 2.0 Client ID
Client Secret←OAuth 2.0 Client Secret
요청 스코프:
openidemailprofile
GitHub
설정 경로: github.com/settings/developers.
1
Settings → Developer settings → OAuth Apps → New OAuth App으로 이동합니다.
2
Application name과 Homepage URL을 입력합니다. 예: https://yourapp.com
3
Authorization callback URL에 아래 URL을 입력합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
Register application을 누른 뒤 Generate a new client secret을 눌러 Client ID/Client Secret 값을 복사합니다.
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
요청 스코프:
read:useruser:email
Apple
Apple Sign In은 Services ID와 Client Secret(JWT) 생성용 개인 키가 필요합니다. 설정 경로: developer.apple.com.
1
Apple Developer Portal에서 Certificates, Identifiers & Profiles → Identifiers로 이동해 App ID를 생성(또는 선택)하고 Sign In with Apple을 활성화합니다.
2
새 식별자를 Services IDs 타입으로 만들고 설명/고유 Bundle ID(예: com.yourapp.web)를 설정한 뒤 Sign In with Apple을 켭니다.
3
Sign In with Apple 옆 Configure에서 도메인을 추가하고 Return URL을 아래처럼 설정합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
Keys → Register a New Key로 이동합니다. Sign In with Apple을 활성화하고 Configure에서 App ID를 연결한 뒤 .p8 개인 키 파일을 다운로드하고 Key ID를 기록합니다.
5
Apple은 최대 6개월 유효한 JWT를 Client Secret으로 사용합니다. 아래 스크립트로 생성한 JWT를 Client Secret으로 입력하세요.
generate_apple_secret.py
import jwt, time
TEAM_ID = "YOUR_TEAM_ID" # 10-char Team ID from Apple Developer
KEY_ID = "YOUR_KEY_ID" # Key ID from the downloaded key
CLIENT_ID = "com.yourapp.web" # Your Services ID Bundle ID
KEY_FILE = "AuthKey_XXXXXX.p8" # Path to the .p8 private key
with open(KEY_FILE, "r") as f:
private_key = f.read()
payload = {
"iss": TEAM_ID,
"iat": int(time.time()),
"exp": int(time.time()) + 86400 * 180, # 180 days
"aud": "https://appleid.apple.com",
"sub": CLIENT_ID,
}
client_secret = jwt.encode(payload, private_key, algorithm="ES256", headers={"kid": KEY_ID})
print(client_secret)
또는 아래 도구로 브라우저에서 JWT를 바로 생성할 수 있습니다. 어떤 데이터도 서버로 전송되지 않습니다:
Apple Client Secret Generatorruns in your browser — nothing is sent to any server 참고: Apple Client Secret은 최대 6개월 후 만료됩니다. 만료 전에 새 JWT를 재발급하여 Authon 대시보드에 갱신해야 합니다.
6
서버 대 서버 알림을 받으려면, Services ID 설정의 Server to Server Notification Endpoint에 아래 URL을 입력합니다:
https://api.authon.dev/v1/webhooks/oauth/apple
필드 매핑:
Client ID←Services ID Bundle ID (e.g. com.yourapp.web)
Client Secret←Generated JWT string (from the script above)
Facebook
설정 경로: Meta Developers.
2
앱 생성 후 제품 목록에서 Facebook Login을 찾아 Set Up을 누릅니다.
3
Facebook Login → Settings에서 Valid OAuth Redirect URIs에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
App Settings → Basic에서 App ID와 App Secret을 복사합니다.
5
본인 외 사용자 로그인 허용을 위해 상단 토글에서 앱 모드를 Development에서 Live로 전환합니다.
6
Facebook Login → Settings에서 Deauthorize Callback URL과 Data Deletion Request URL에 아래 URL을 입력합니다:
https://api.authon.dev/v1/webhooks/oauth/facebook
필드 매핑:
Client ID←App ID
Client Secret←App Secret
요청 스코프:
public_profileemail
Instagram
Instagram OAuth는 Instagram Basic Display API (또는 최신 Instagram Graph API)를 사용하며 Meta Developers에서 함께 관리합니다.
2
앱 대시보드에서 Instagram Basic Display를 찾아 Set Up을 누른 뒤 Instagram Basic Display → Basic Display로 이동합니다.
3
Valid OAuth Redirect URIs에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
Roles → Instagram Test Users에서 테스트 유저를 추가해 개발 중 로그인 테스트를 진행합니다.
5
Instagram Basic Display → Basic Display에서 Instagram App ID와 Instagram App Secret을 복사합니다.
필드 매핑:
Client ID←Instagram App ID
Client Secret←Instagram App Secret
요청 스코프:
user_profileuser_media
Microsoft
설정 경로: Azure Portal.
1
portal.azure.com →
Azure Active Directory (또는
Microsoft Entra ID) →
App registrations →
New registration으로 이동합니다.
2
앱 이름을 입력하고 호환성을 위해 Accounts in any organizational directory and personal Microsoft accounts를 선택합니다.
3
Redirect URI에서 Web를 선택하고 아래 URL을 입력합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
Register를 누른 뒤 개요 페이지에서 Application (client) ID를 복사합니다.
5
Certificates & secrets → Client secrets → New client secret에서 새 Secret을 만든 뒤 Value를 즉시 복사합니다(한 번만 표시됨).
필드 매핑:
Client ID←Application (client) ID
Client Secret←Client secret Value
요청 스코프:
openidemailprofileUser.Read
Discord
설정 경로: discord.com/developers.
2
왼쪽 사이드바에서 OAuth2로 이동합니다. Redirects에서 Add Redirect를 눌러 아래 URL을 입력합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
같은 OAuth2 페이지에서 Client ID를 복사합니다. Reset Secret을 눌러 새 Client Secret도 복사합니다.
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
요청 스코프:
identifyemail
Authon은 PKCE 기반 OAuth 2.0을 사용합니다. 설정 경로: developer.twitter.com.
2
App Settings → Authentication settings에서 OAuth 2.0을 활성화하고 App type을 Web App으로 설정합니다.
3
Callback URI를 아래 URL로 설정합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
Keys and tokens 탭에서 Client ID와 Client Secret을 복사합니다.
참고: Twitter/X OAuth 2.0에서 email 스코프를 사용하려면 Elevated 권한이 있는 Developer Account가 필요합니다. 권한이 없으면 users.read 및 tweet.read만 사용할 수 있습니다.
필드 매핑:
Client ID←OAuth 2.0 Client ID
Client Secret←OAuth 2.0 Client Secret
요청 스코프:
users.readtweet.readoffline.access
LinkedIn
설정 경로: linkedin.com/developers.
2
Auth 탭의 Authorized redirect URLs for your app에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
같은 Auth 탭에서 Client ID와 Client Secret을 복사합니다.
4
Products 탭에서 Sign In with LinkedIn using OpenID Connect 제품 접근 권한을 요청합니다.
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
요청 스코프:
openidprofileemail
Slack
설정 경로: api.slack.com/apps.
2
왼쪽 사이드바의 OAuth & Permissions로 이동합니다. Redirect URLs에서 Add New Redirect URL을 눌러 아래 URL을 입력합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
Scopes → User Token Scopes에서 필요한 스코프를 추가합니다.
4
Basic Information에서 App Credentials의 Client ID와 Client Secret을 복사합니다.
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
요청 스코프:
openidemailprofile
Twitch
설정 경로: dev.twitch.tv/console.
2
OAuth Redirect URL을 아래 URL로 설정합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
Category를 Website Integration으로 설정하고 Create를 누릅니다.
4
앱의 Manage를 눌러 Client ID를 복사합니다. New Secret을 눌러 Client Secret도 복사합니다.
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
요청 스코프:
openiduser:read:email
LINE
설정 경로: developers.line.biz.
2
채널 이름, 설명, 앱 타입(Web app)을 입력합니다.
3
LINE Login 탭의 Callback URL에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
Basic settings 탭에서 Channel ID와 Channel secret을 복사합니다.
5
Messaging API 탭에서 Webhook URL에 아래 URL을 입력하고, Use webhook을 활성화합니다:
https://api.authon.dev/v1/webhooks/oauth/line
필드 매핑:
Client ID←Channel ID
Client Secret←Channel secret
요청 스코프:
profileopenidemail
Kakao
카카오 로그인 설정은 카카오 공식 사전 설정 문서를 기준으로 진행하세요.
2
앱 대시보드에서 카카오 로그인 → 일반 → 사용 설정을 켭니다.
3
앱 대시보드에서 앱 → 일반 → 플랫폼 키로 이동해 REST API Key를 발급/확인합니다. (Client ID) 그리고 카카오 로그인 → 일반에서 Redirect URI에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
발급된 REST API Key를 클릭해 상세 화면에서 Secret Key를 확인합니다. (Client Secret)
5
카카오 로그인 → 동의항목에서 닉네임, 프로필 사진, 카카오계정(이메일)을 활성화합니다.
6
내 애플리케이션 → 앱 설정 → 고급에서 서비스 종료 시 연결 끊기 알림 URL에 아래 URL을 입력합니다:
https://api.authon.dev/v1/webhooks/oauth/kakao
참고: 카카오 Secret Key는 선택 사항이지만 운영 환경에서는 설정을 권장합니다. Secret Key 없이 Client ID만 사용하면 토큰 교환 보안이 약해집니다.
필드 매핑:
Client ID←REST API Key
Client Secret←Secret Key (REST API Key 상세 화면)
요청 스코프:
profile_nicknameprofile_imageaccount_email
Naver
설정 경로: developers.naver.com.
2
애플리케이션 이름을 입력합니다. 사용 API에서 네이버 로그인 (Naver Login)을 선택하고 권한 항목(이름, 이메일, 프로필 이미지, 휴대전화)을 선택합니다.
3
서비스 URL에 앱 홈페이지 URL을 입력하고 Callback URL에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
등록 후 앱의 개요 (Overview) 탭에서 Client ID와 Client Secret을 복사합니다.
5
네이버 로그인 → 서비스 설정에서 연결 끊기 알림 URL에 아래 URL을 입력합니다:
https://api.authon.dev/v1/webhooks/oauth/naver
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
Spotify
설정 경로: developer.spotify.com/dashboard.
2
Redirect URIs에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
Web API와 Web Playback SDK가 필요하면 체크하고 Save를 누릅니다.
4
앱 대시보드에서 Settings으로 들어가 Client ID를 복사하고 View client secret을 눌러 Client Secret도 복사합니다.
필드 매핑:
Client ID←Client ID
Client Secret←Client Secret
요청 스코프:
user-read-emailuser-read-private
TikTok
설정 경로: developers.tiktok.com.
2
Login Kit 제품 섹션에서 기능을 활성화하고 Redirect URI에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
Scopes에서 user.info.basic 및 user.info.email을 활성화합니다.
4
앱 상세 페이지에서 Client Key (Client ID로 사용)와 Client Secret을 복사합니다.
참고: TikTok은 Client ID 대신 "Client Key"라는 용어를 사용합니다. Authon의 Client ID 입력란에 Client Key 값을 넣으세요.
필드 매핑:
Client ID←Client Key
Client Secret←Client Secret
요청 스코프:
user.info.basicuser.info.email
GitLab
GitLab은 OAuth 2.0을 지원하며 gitlab.com 또는 자체 호스팅 GitLab 인스턴스에서 설정할 수 있습니다.
1
GitLab에서 아바타 메뉴의 Edit profile → Applications (왼쪽 사이드바)로 이동합니다.
2
Name을 입력하고 Redirect URI에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
Scopes에서 read_user와 email을 선택합니다.
4
Save application을 누른 뒤 Application ID와 Secret을 복사합니다.
필드 매핑:
Client ID←Application ID
Client Secret←Secret
요청 스코프:
read_useremailopenidprofile
Bitbucket
설정 경로: Bitbucket Workspace 설정 bitbucket.org.
1
Workspace Settings (아바타 클릭 → 워크스페이스 선택 → Settings) → OAuth consumers → Add consumer.
2
Name과 Callback URL을 입력합니다:
https://api.authon.dev/v1/auth/oauth/redirect
3
Permissions에서 Account → Read와 Email → Read를 선택합니다.
4
Save를 누른 뒤 consumer를 펼쳐 Key (Client ID)와 Secret (Client Secret)을 확인합니다.
필드 매핑:
Client ID←Key
Client Secret←Secret
Notion
설정 경로: notion.so/my-integrations.
2
Integration name을 입력하고 워크스페이스를 선택한 뒤 통합 유형을 Public으로 설정합니다.
3
OAuth Domain & URIs 섹션에서 Redirect URI에 아래 URL을 추가합니다:
https://api.authon.dev/v1/auth/oauth/redirect
4
통합 생성 후 설정 페이지에서 Client Secret 옆 Show를 눌러 값을 확인하고 OAuth client ID와 OAuth client secret을 복사합니다.
참고: Notion OAuth는 인증 과정에서 사용자가 명시적으로 선택한 페이지/데이터베이스에만 접근 권한을 부여합니다. 사용자 이메일을 받으려면 통합 설정에서 user.email 권한을 활성화해야 합니다.
필드 매핑:
Client ID←OAuth client ID
Client Secret←OAuth client secret