가이드

내 서버에서 토큰 검증하기

Authon은 프론트엔드 전용 SDK입니다. 직접 운영하는 서버에서 Authon이 발급한 토큰을 검증하고 자체 세션을 발급하는 방법을 설명합니다.

개요

Authon 팝업에서 로그인이 완료되면 Authon JWT가 발급됩니다. 자체 백엔드 API가 있다면, 이 토큰을 백엔드에 전달하고 검증한 뒤 서비스 자체 세션/JWT를 발급하는 "브릿지" 패턴이 필요합니다.

1. 유저가 Authon 팝업으로 로그인
2. 프론트엔드가 Authon JWT를 받음 authon.getToken()
3. 프론트엔드가 서비스 백엔드에 토큰 전달 POST /api/auth/authon
4. 백엔드가 Authon API로 토큰 검증 GET /v1/auth/token/verify
5. 검증 성공 → 서비스 자체 JWT 발급

1. 프론트엔드: 토큰 획득

Authon 로그인 성공 후 getToken()으로 JWT를 가져와 서비스 백엔드에 전달합니다.

frontend.ts
import { Authon } from '@authon/js';

const authon = new Authon('pk_live_...');

authon.on('signedIn', async (user) => {
  const authonToken = authon.getToken();

  // Send token to your backend
  const res = await fetch('/api/auth/authon', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ token: authonToken }),
  });

  const { serviceToken } = await res.json();
  // Use serviceToken for your API calls
});

await authon.openSignIn();

2. 백엔드: 토큰 검증 + 세션 발급

서비스 백엔드에서 Authon의 토큰 검증 API를 호출하여 토큰이 유효한지 확인합니다. 유효하면 유저를 생성(또는 조회)하고 서비스 자체 JWT를 발급합니다.

routes/auth.ts
app.post('/api/auth/authon', async (req, res) => {
  const { token } = req.body;
  if (!token) return res.status(400).json({ error: 'Token required' });

  // 1. Verify the Authon token
  const verify = await fetch('https:1
    headers: { Authorization: 4 },
  });
  const { valid, user: authonUser } = await verify.json();

  if (!valid || !authonUser) {
    return res.status(401).json({ error: 'Invalid Authon token' });
  }

  2
  let user = await db.users.findByEmail(authonUser.email);
  if (!user) {
    user = await db.users.create({
      email: authonUser.email,
      name: authonUser.displayName,
      provider: 'authon',
    });
  }

  3
  const serviceToken = jwt.sign(
    { userId: user.id, email: user.email },
    process.env.JWT_SECRET,
    { expiresIn: '7d' }
  );

  res.json({ serviceToken, user });
});

토큰 검증 API

GET/v1/auth/token/verify

Authon JWT를 검증하고 유저 정보를 반환합니다. API 키 없이 호출 가능합니다.

요청

bash
curl https://api.authon.dev/v1/auth/token/verify \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

응답

json
{
  "valid": true,
  "payload": {
    "sub": "user-uuid",
    "projectId": "project-uuid",
    "type": "access",
    "iat": 1711584000,
    "exp": 1711584900
  },
  "user": {
    "id": "user-uuid",
    "email": "user@example.com",
    "displayName": "Alan Kim",
    "avatarUrl": null,
    "emailVerified": true
  }
}
!

토큰 검증은 반드시 서버사이드에서 수행하세요. 프론트엔드에서 토큰을 자체 검증하면 보안상 위험합니다. 이메일만으로 서비스 JWT를 발급하는 것도 위험합니다 — 반드시 Authon 토큰을 검증한 후에 발급하세요.

getToken() 상세

authon.getToken()은 Authon이 발급한 JWT(JSON Web Token)를 반환합니다. 이 토큰은 HS256으로 서명되며, 15분 후 만료됩니다. 만료 시 SDK가 자동으로 리프레시합니다.

항목
형식JWT (HS256)
만료15
자동 갱신예 (SDK가 자동 처리)
Payload.sub유저 UUID
Payload.projectId프로젝트 UUID

연동 체크리스트

Authon — 범용 인증 플랫폼