Developer Docs

SSAFY 구성원 플랫폼 API 문서

SSAFY Verify는 단일 인증 API가 아니라 SSAFY 구성원 플랫폼 API입니다.User Auth로 구성원 여부를 확인하고, Server API로 프로필 조회, 디렉터리 lookup, Mattermost 알림을 backend에서 위임합니다.

연동 경로 선택

목표에 맞는 시작 문서를 먼저 고르세요.Firebase 콘솔처럼 같은 App 아래에서 User Auth와 Server API credential을 함께 운영하는 흐름입니다.

User Auth

구성원 인증만 붙이기

시작

외부 서비스 로그인/가입 단계에서 SSAFY 구성원 여부와 기수, 캠퍼스, 트랙을 확인합니다.

Public PKCE client_id
exact redirect_uri
state/iss/JWT 검증

Server API

Backend에서 프로필 조회

시작

서버가 pairwise sub, Mattermost user id, username/cohort 기준으로 SSAFY profile snapshot을 조회합니다.

confidential credential
ssafy.profile.read
approved User Auth claim scope

Notification

Mattermost DM 발송

시작

승인된 template/purpose 조합으로 단건 또는 최대 25명 batch Mattermost DM을 발송합니다.

ssafy.notify.mattermost.send
approved template
idempotency_key

Mobile

모바일/네이티브 앱 연결

시작

WebView가 아니라 시스템 브라우저, Universal Link, verified App Link 기반으로 인증 흐름을 연결합니다.

system browser
deep link callback
server token exchange

Canonical issuer

Verify 연동 설정은 아래 issuer 하나만 사용합니다.

https://verify.myknow.xyz

callback의 isshttps://verify.myknow.xyz와 exact match일 때만 token exchange를 시작하세요. SDK/API base URL과 JWKS 기준값도 같은 issuer를 사용합니다.

콘솔 운영 루프

App 단위로 신청, 검증, 테스트, 운영 추적을 반복합니다.공개 문서는 흐름만 안내하고 secret과 실행 결과는 인증된 Developer Console에서 다룹니다.

1

App과 credential 분리

Developer Console

하나의 App 아래에 User Auth public client와 Server API confidential credential을 분리해 등록합니다.

App statusclient_idapproved scopes
2

Launch readiness 확인

Quickstart

redirect URI, allowed origin, scope, template, webhook, team 구성을 readiness board에서 먼저 정리합니다.

redirect exact matchPKCE S256template approval
3

서비스 구성원 API 테스트

Server API

소유자와 공동 개발자를 안전한 테스트 대상으로 선택해 profile, directory, Mattermost notification 호출을 검증합니다.

active membersapi-test idempotencyside-effect confirm
4

request_id 운영 추적

Error Codes

실패 응답의 request_id를 기준으로 request logs, security events, audit logs와 runbook을 함께 확인합니다.

error_coderequest_idredacted logs

문서 흐름

처음 연동은 User Auth로 구성원 인증을 붙이고, backend 기능이 필요해지면 같은 App 아래에 Server API credential을 추가합니다.

OIDC는 v2에서 지원 예정

SSAFY Verify v1은 User Auth와 Server API를 공식 지원합니다.외부 앱 로그인을 SSAFY Verify로 대체하는 OIDC provider 문서는 현재 public quickstart 범위에서 제외합니다.

이미 구현된 OIDC endpoint는 향후 호환성을 위해 유지하지만, 신규 연동은/verify/authorize/verify/token를 먼저 사용하세요. backend에서 SSAFY 프로필, 디렉터리, Mattermost 알림 위임이 필요하면/docs/server-api/v1/* 계약을 사용합니다.

User Auth 준비물

구성원 인증과 verification_token 교환을 위해 필요한 값입니다.

client_id

Developer Portal App 아래에서 승인받은 credential client id

redirect_uri

client 설정에 exact match로 등록된 callback URL. 승인 후 소유자가 수정 가능

scope

ssafy.verify는 필수. 기수/캠퍼스/지역은 ssafy.affiliation, 트랙은 ssafy.track, 이름은 ssafy.name, 이미지는 ssafy.profile_image 추가

Mattermost id

기존 Mattermost 인증 프로젝트의 계정 매핑이 필요할 때만 ssafy.mattermost_id 요청

PKCE S256

브라우저에서 verifier를 만들고 서버 token exchange까지 보존

state

요청 시작 시 만든 값을 callback에서 반드시 비교

Server API 준비물

partner backend가 SSAFY 프로필과 Mattermost 알림을 SSAFY Verify에 위임할 때 필요한 값입니다.

Server API credential

같은 App 아래에서 approved confidential credential 발급

client_secret

생성 직후 1회만 확인하고 backend secret 저장소에 보관

server scopes

ssafy.profile.read, ssafy.directory.lookup, ssafy.notify.mattermost.send/status 등 필요한 권한 승인

template/purpose

Mattermost 알림은 Admin이 승인한 template과 purpose만 사용

Bearer token

backend에서 /v1/server/token client_credentials 교환 후 /v1/* 호출

핵심 endpoints

/verify/authorizeGET

사용자가 SSAFY 인증을 진행하는 화면

/verify/tokenPOST

callback code를 verification_token으로 교환

/v1/server/tokenPOST

Server API access token 발급

/v1/ssafy-members/{sub}/profileGET

pairwise subject 기준 SSAFY 프로필 조회

/v1/mattermost-users/profiles/batchPOST

최대 500개 Mattermost user id 일괄 프로필 조회

/v1/mattermost-usersGET

Mattermost username/cohort exact lookup

/v1/notifications/mattermostPOST

승인 템플릿 기반 Mattermost DM 단건 즉시 발송

/v1/notifications/mattermost/batchPOST

최대 25명 Mattermost DM batch 발송