콘텐츠로 이동

시작하기

tinyauth를 통해 사용자를 인증하려는 애플리케이션은 먼저 OAuth/OIDC 클라이언트로 등록해야 해요. 클라이언트 등록은 config.yamlclients 섹션에서 할 수 있어요.

config.yaml
clients:
- id: my-app
name: My Application
client_id: my-app-client-id
client_secret: my-app-client-secret
redirect_uris:
- https://myapp.example.com/callback
response_types:
- code
grant_types:
- authorization_code
- refresh_token
scope: openid profile email

항목필수설명
idO클라이언트의 내부 고유 식별자예요.
nameO사용자에게 표시될 애플리케이션 이름이에요. 동의 화면에서 보여요.
logo_uriX동의 화면에 표시될 로고 이미지 URL이에요.
client_idOOAuth 요청에서 사용하는 공개 클라이언트 식별자예요.
client_secret클라이언트 시크릿이에요. 기밀 클라이언트(서버 측 앱)에서만 필요하며, 공개 클라이언트(SPA/모바일)에서는 생략해요.
redirect_urisO인증 후 리다이렉트할 수 있는 허용 URL 목록이에요.
response_typesO허용할 OAuth 응답 유형이에요. 일반적으로 code를 사용해요.
grant_typesO허용할 OAuth 권한 부여 유형이에요.
scopeO허용할 OAuth 스코프(공백으로 구분)예요.

기밀 클라이언트 vs 공개 클라이언트

섹션 제목: “기밀 클라이언트 vs 공개 클라이언트”

OAuth에서는 클라이언트를 두 가지 유형으로 구분해요.

기밀 클라이언트 (Confidential Client)

섹션 제목: “기밀 클라이언트 (Confidential Client)”

서버 측에서 시크릿을 안전하게 보관할 수 있는 애플리케이션이에요. client_secret을 설정하며, 토큰 교환 시 시크릿을 함께 전송해요.

  • Next.js, Express, Spring Boot 등 서버 사이드 앱
  • client_secret이 필수
clients:
- id: web-server-app
name: Web Server App
client_id: web-server-client
client_secret: ${WEB_SERVER_SECRET}
redirect_uris:
- https://myapp.com/api/callback
response_types:
- code
grant_types:
- authorization_code
- refresh_token
scope: openid profile email

클라이언트 측 코드에서 시크릿을 안전하게 보관할 수 없는 애플리케이션이에요. client_secret을 생략하며, 대신 PKCE 를 사용하여 보안을 확보해요.

  • React SPA, Vue SPA, 모바일 앱 등
  • client_secret 생략
clients:
- id: spa-app
name: Single Page App
client_id: spa-client
redirect_uris:
- https://myapp.com/callback
response_types:
- code
grant_types:
- authorization_code
- refresh_token
scope: openid profile email

등록된 클라이언트 애플리케이션은 tinyauth의 OIDC Discovery 엔드포인트를 사용하여 인증에 필요한 정보를 자동으로 가져올 수 있어요.

{server.public_origin}/.well-known/openid-configuration

이 엔드포인트는 인증, 토큰, 사용자 정보, JWKS 등의 엔드포인트 URL을 반환해요. 대부분의 OIDC 클라이언트 라이브러리는 이 URL만으로 자동 설정이 가능해요.


클라이언트를 등록한 후 실제 애플리케이션에 연동하는 방법은 다음 가이드를 참고해 주세요.