⚠️ 작성 중인 초안입니다 — 검토·확정 전이며, 각 문서의 "미확정" 항목은 정책이 아닙니다.
Skip to content

02 사전 설정

연동 개발 전에 멤버십과 주고받는 항목, 등록 규칙, 환경별 주소.

상태확정
최종 확인2026-09-23

환경과 주소

stage (샌드박스)prod
호스트https://stage-membership.m-box.com 개방 예정https://membership.m-box.com 개방 예정
디스커버리{호스트}/.well-known/openid-configuration같음
클라이언트별도 발급별도 발급
사용자 계정발급 시 테스트 계정 제공. 자유 가입 가능실사용자
redirect_urihttp://localhost:* 허용https만
데이터주기적으로 초기화될 수 있음보존

두 환경은 같은 코드가 돌고 데이터만 분리되어 있다. stage에서 05 점검 체크리스트를 통과한 뒤 prod 클라이언트를 발급받는다.

개방 시점

stage는 멤버십 인프라 작업(Redis·시크릿 주입) 완료 후 개방된다. 개방 전에는 06 샘플 클라이언트로컬 실행 절차로 멤버십 서버를 직접 띄워 개발할 수 있다 — 같은 코드다. 개방 시점은 담당자가 등록된 연락처로 안내한다.

클라이언트 발급

클라이언트 등록은 멤버십 담당자가 한다(셀프 서비스 콘솔 없음).

담당머니박스 개발실 유원영 · yoo.wonyoung@m-box.com
신청 방법아래 신청 항목을 메일로 보낸다
소요영업일 1일 이내
회신client_id · client_secret(1회) · 디스커버리 주소 · stage 테스트 계정

신청 항목

항목필수설명
서비스필수머니박스 / 레밋 / 핀모든 중 하나레밋
클라이언트 용도필수웹 / iOS 앱 / Android 앱 / 관리자 등. 배포 단위마다 클라이언트 하나
표시 이름필수로그인 화면 상단에 "○○에 로그인하는 중"으로 표시레밋
로고선택https 이미지 URL, 정방형, 96px 이상https://static.remit.example/logo.png
redirect_uri (stage)필수여러 개 가능. 아래 규칙http://localhost:3000/auth/callback, https://stage.remit.example/auth/callback
redirect_uri (prod)prod 신청 시https만https://www.remit.example/auth/callback
담당자필수이름 · 이메일 · 휴대폰. 장애·키 회전·개방 안내를 받는 곳

같은 서비스의 클라이언트들은 같은 sub를 받는다. 웹과 앱을 따로 등록해도 회원 식별에는 영향이 없다.

발급받는 것

항목설명
client_id서비스·용도를 담은 문자열. 예: remit-web, remit-ios
client_secret43자 임의 문자열. 한 번만 전달되며 멤버십에도 원문이 남지 않는다. 분실 시 재발급
서비스 · sub 접두어등록된 서비스와 그 접두어(레밋 rm_ / 핀모든 fm_ / 머니박스 mb_). 첫 로그인 때 받은 sub가 이 접두어인지 확인한다
디스커버리 주소라이브러리 설정에 넣는 값
stage 테스트 계정 2개① 이메일 있는 계정, ② 이메일 없는 계정(이관 회원 재현용 — email 클레임이 빠진 ID 토큰을 받는다). 추가 계정은 stage 로그인 화면에서 자유 가입
로고 파일머니박스 심볼 SVG·PNG — 로그인 버튼용(04 로그인 버튼)
샘플 클라이언트06에 전문이 실려 있어 저장소 접근이 없어도 실행 가능. 멤버십 저장소(로컬 서버 실행·최신 샘플) 읽기 권한이 필요하면 담당자에게 협력사 GitHub 계정 초대를 요청한다

클라이언트 시크릿

client_secret은 서버에만 둔다(환경변수·시크릿 저장소). 브라우저·앱 코드·저장소·이슈 트래커에 넣지 않는다. 노출이 확인되면 즉시 담당자에게 알려 폐기·재발급한다. 앱은 04 활용 › 앱의 경로(자사 백엔드 경유)로 토큰을 요청한다.

시크릿 재발급·회전

  1. 담당자에게 재발급을 요청한다(사유: 분실 / 노출 / 정기 회전).
  2. 새 시크릿이 발급되면 옛 시크릿은 24시간 동안 함께 유효하다.
  3. 그 안에 연동 서비스 설정을 새 값으로 바꾸고 배포한다.
  4. 24시간 후 옛 값은 자동 폐기된다. 이후 옛 값으로 토큰 요청 시 invalid_client.

리다이렉트 URI

인가 코드가 전달되는 연동 서비스 주소다. 멤버십은 등록된 값과 문자열이 정확히 일치하는 redirect_uri만 받는다. 쿼리스트링을 붙이지 않고 고정 경로를 쓴다.

규칙이유
https 필수 (localhost·127.0.0.1http 허용)인가 코드가 평문으로 흐르면 탈취된다
fragment(#…) 불가표준 위반
클라이언트당 호스트 하나식별자(pairwise)는 첫 redirect_uri의 호스트를 섹터로 삼는다. 호스트가 갈리면 식별자가 의도와 다르게 나뉠 수 있어 등록을 거부한다. 호스트가 다르면 클라이언트를 따로 등록한다 — 같은 서비스면 sub는 같다
커스텀 스킴(myapp://) 불가다른 앱이 가로챌 수 있다. 앱은 https 딥링크로
포트·끝 슬래시까지 일치https://a.example/cbhttps://a.example/cb/는 다른 값

예: https://www.remit.example/auth/membership/callback

로그아웃 리다이렉트 URI 예정

멤버십 로그아웃 후 돌아올 주소. 등록된 값만 post_logout_redirect_uri로 쓸 수 있다. 현재는 등록 경로가 없어 지정할 수 없으며, 반영 시 신청 항목에 추가된다.

동의항목 — scope

연동 서비스가 요청하는 정보의 범위다. 카카오의 동의항목에 해당하지만 멤버십은 항목이 셋뿐이고, 사용자에게 보이는 동의 화면은 제3자 제공 동의 한 장(첫 연결 때만)이다.

scope제공 클레임언제 요청하는가
openidsub항상
emailemail, email_verified사실상 항상. 단 email은 없을 수 있다(01 이해하기)
offline_access리프레시 토큰서버 간 백그라운드 호출이 필요할 때만. prompt=consent를 함께 보낸다

기본 조합은 openid email이다. 그 외 scope(profile, phone 등)는 오류 없이 무시된다 — 응답의 scope에 빠져 있으면 요청이 무시된 것이다.

개인정보 처리방침에 적을 것

연동 서비스는 머니박스(운영 법인)로부터 개인정보를 제공받는 자다. 연동 서비스의 개인정보 처리방침에 다음을 반영한다(문안은 각 사 법무 검토).

항목내용
제공하는 자주식회사 머니박스
제공받는 자연동 서비스 운영 법인
제공 항목이메일 주소, 통합 멤버십 회원 식별자(서비스 전용)
제공 목적통합 멤버십 계정으로 연동 서비스 로그인 및 회원 식별
보유·이용 기간연동 서비스 회원 탈퇴 또는 통합 멤버십 연결 해제 시까지

사용자는 멤버십 화면에서 이 제공에 동의하고 로그인한다. 연동 서비스는 이 정보를 위 목적 외로 쓰거나 제3자에 재제공하지 않는다.