Platforms

프레임워크별 SSAFY 인증 적용

공식 지원 범위는 protocol, hosted page, backend exchange입니다. Swift/Kotlin/Flutter는 SDK가 아니라 deep link 설정 메모만 제공합니다.

공식 지원 문서

아래 문서는 SSAFY Verify가 책임지는 연동 계약입니다. 모바일은 플랫폼별 SDK가 아니라 hosted page와 backend exchange contract를 기준으로 지원합니다.

참고 설정 메모

아래 문서는 SDK 유지보수 대상이 아닙니다. 각 플랫폼에서 deep link와 시스템 브라우저를 어떤 식으로 연결하는지만 짧게 정리합니다.

공통 아키텍처

사용자 앱의 플랫폼은 달라도 신뢰 경계는 같습니다. code 교환과 token 검증은 앱 서버가 책임집니다.

Web
React/Vue는 Hosted SDK가 popup, PKCE, callback 메시지를 처리
Mobile
iOS/Android/Flutter는 공통 mobile 문서의 시스템 브라우저 흐름 사용
Deep link
Universal Link 또는 verified App Link를 우선 사용하고 custom scheme은 fallback
Backend
모든 플랫폼은 자기 backend에서 /verify/token 교환과 JWT 검증 수행

서버가 필요한 이유

verification_token 검증, client_secret 보호, 앱 세션 저장은 브라우저나 모바일 앱이 아니라 backend에서 처리해야 합니다.

플랫폼 공통 보안 체크리스트

공식 지원 범위

protocol, hosted page, backend token exchange만 공식 지원

WebView

Unsupported / Do not use. 인증 요청을 embedded WebView에서 열지 않음

secret 위치

client_secret은 confidential client의 서버 환경변수에만 저장

state 검증

authorize 시작 시 만든 state와 callback state를 반드시 비교

PKCE 보관

code_verifier는 callback 완료 후 서버 교환까지만 짧게 보관

token 검증

verification_token은 서버에서 iss, aud, exp, sub, client_id, verified, auth_time, amr, acr를 검증

저장 최소화

앱 DB에는 verified, sub, cohort, campus, verifiedAt 정도만 저장

Mattermost id

ssafy.mattermost_id는 기존 MM 인증 계정 매핑 목적일 때만 요청하고 저장

WebView는 지원하지 않습니다

WebView는 앱이 인증 화면과 callback을 통제할 수 있는 embedded user-agent입니다. SSAFY Verify는 production 인증 수단이므로 모바일 인증은 시스템 브라우저 기반 흐름만 공식 지원합니다.