회원가입 | 고객센터 |
DESIGNONEX
디자인원엑스
DX서비스
Q&A
지식공유
DX마켓
쇼핑몰
통계
공지사항N
로그인 회원가입
고객센터

멀티 도메인 통합 소셜 로그인 플러그인

D DX관리자
2026.10.10 06:39(수정됨) 2 0 1


 

DX SSO Bridge 사용 매뉴얼

버전 1.0.0 · DXCMS 9.8.0 이상 · PHP 5.6 이상

멀티 도메인(서브도메인 포함)에서 소셜 로그인을 본 사이트 한 곳에서 처리하고, 로그인이 끝나면 원래 사이트로 돌아가 로그인된 상태가 되게 하는 플러그인입니다. 코어 파일은 수정하지 않습니다.

예) dxstudio.designonex.com에서 카카오 로그인을 누름 → designonex.com에서 로그인 → 다시 dxstudio.designonex.com으로 복귀(로그인 완료)



1. 왜 필요한가

소셜 로그인(카카오, 네이버, 구글, 깃허브)은 로그인 후 돌아올 콜백 주소를 미리 등록한 도메인으로만 받습니다. 사이트가 여러 개면 도메인마다 등록해야 하고, 서브도메인이 많으면 사실상 관리할 수 없습니다. 또 로그인 정보(세션 쿠키)는 도메인마다 따로여서, 한 사이트에서 로그인해도 다른 도메인은 로그인되지 않습니다.

이 플러그인은 소셜 로그인을 본 사이트에서만 처리하고, 결과만 1회용 티켓으로 하위 사이트에 전달합니다.



2. 전제 조건

조건 설명
같은 설치, 같은 DB 멀티사이트가 하나의 DXCMS 설치와 하나의 DB를 쓰는 구조여야 합니다. (회원이 공유됨)
사이트 등록 하위 사이트 도메인이 관리자 → 사이트 관리에 등록된 활성 도메인이어야 합니다.
본 사이트 소셜 설정 본 사이트에 소셜 로그인 키와 콜백 주소가 설정되어 있어야 합니다.
쓰기 권한 최초 접속 때 플러그인 폴더에 install.done 파일을 만들 수 있어야 합니다.


3. 설치

  1. plugins/dx-sso-bridge/ 폴더를 사이트에 올립니다.
  2. 관리자 화면에서 플러그인을 활성화합니다.
  3. config.php를 열어 hub_host를 본 사이트 도메인으로 맞춥니다.
    • 기본값은 designonex.com 입니다. 스킴(https://)과 www, 포트 없이 적습니다.
  4. 사이트에 한 번 접속합니다. 티켓 테이블(dx_sso_tickets)이 자동으로 만들어지고 install.done 파일이 생깁니다.
  5. 본 사이트의 소셜 로그인 설정(키, 콜백 주소)은 평소 그대로 둡니다. 하위 사이트에는 콜백 주소를 따로 등록할 필요가 없습니다.

같은 플러그인을 모든 사이트에서 활성화하세요. 같은 설치를 공유하는 멀티사이트라면 한 번 활성화로 모든 도메인에 적용됩니다. 본 사이트에서는 아무것도 가로채지 않고 코어 동작 그대로입니다.



4. 동작 방식

[하위 사이트]                 [본 사이트]
 사용자가 /auth/kakao 클릭
        │
        ├─ ① 본 사이트로 이동 ───────▶ /sso-bridge/start
        │                               · 하위 사이트가 등록된 도메인인지 확인
        │                               · 이미 로그인이면 바로 ③으로
        │                               ▼
        │                          ② 카카오 로그인 (평소와 동일)
        │                               ▼
        │                          ③ /sso-bridge/issue
        │                               · 1회용 티켓 발급
        ◀─ ④ 티켓과 함께 복귀 ──────────┘
 /sso-bridge/finish
   · 티켓 확인 후 로그인
   · 로그인 버튼을 눌렀던 페이지로 이동
  • 하위 사이트에서 이미 로그인되어 있으면 가로채지 않습니다.
  • 본 사이트에 이미 로그인되어 있으면 소셜 로그인 화면을 거치지 않고 바로 돌아옵니다.
  • 일반 로그인(아이디/비밀번호)도 본 사이트를 거치게 하려면 하위 사이트의 로그인 링크를 /sso-bridge/go로 연결합니다.


주소 정리

주소 어디서 용도
/auth/kakao 등 하위 사이트 소셜 로그인 버튼. 자동으로 본 사이트로 중계됩니다.
/sso-bridge/go 하위 사이트 중계 시작. ?provider=kakao, ?redirect=/경로 지원 (provider 없으면 본 사이트 일반 로그인 화면)
/sso-bridge/start 본 사이트 하위 사이트의 요청을 받는 곳 (직접 쓰지 않음)
/sso-bridge/issue 본 사이트 티켓 발급 (직접 쓰지 않음)
/sso-bridge/finish 하위 사이트 티켓으로 로그인 (직접 쓰지 않음)


5. 설정 (config.php)

키 기본값 설명
hub_host designonex.com 본 사이트 도메인
providers kakao, naver, google, github 중계할 소셜 목록. 코어의 /auth/{이름} 과 같은 이름
ticket_ttl 120 티켓 유효 시간(초). 30~600 사이로 보정됨
disabled false true면 중계를 끄고 코어 동작 그대로 (긴급 끄기)

설정을 바꾼 뒤에는 저장만 하면 바로 적용됩니다.



6. 보안

  • 티켓은 64자 무작위 값이며 1회용입니다. 사용되면 즉시 폐기되고, 기본 120초 뒤 만료됩니다.
  • 티켓에는 요청한 하위 사이트의 세션 nonce가 묶여 있어서, 남이 만든 로그인 링크를 눌러 다른 사람 계정으로 로그인되는 공격을 막습니다.
  • 돌아갈 도메인은 사이트 관리에 등록된 도메인만 허용합니다. 임의 주소로는 티켓이 나가지 않습니다.
  • 로그인 후 이동하는 경로는 같은 사이트 안의 경로만 허용합니다. 외부 주소는 /로 바뀝니다.
  • 탈퇴·정지된 회원은 티켓이 있어도 로그인되지 않습니다.
  • 오래된 티켓은 자동으로 정리됩니다.


7. 점검 방법

설치 후 아래 순서로 확인하세요.

  1. 하위 사이트 로그아웃 상태에서 로그인 화면의 카카오 버튼을 누릅니다.
    • 본 사이트(designonex.com) 주소로 이동하고 카카오 로그인 화면이 나와야 합니다.
  2. 로그인을 마치면 하위 사이트의 원래 페이지로 돌아오고 로그인된 상태여야 합니다.
  3. 본 사이트에 로그인된 상태에서 하위 사이트 로그인 버튼을 누르면 로그인 화면 없이 바로 돌아와야 합니다.
  4. 여러 번 시험해도 이전 티켓이 재사용되지 않아야 합니다. (새로고침으로 finish 주소를 다시 열면 로그인 화면으로 갑니다.)


8. 문제 해결

증상 확인할 것
로그인 후 다시 로그인 화면으로 돌아옴 하위 사이트가 사이트 관리에 등록되어 있는지, hub_host가 맞는지 확인하세요. 플러그인이 활성화되어 있는지도 확인하세요.
하위 사이트에서 카카오 버튼이 그대로 하위 사이트에서 처리됨 플러그인이 해당 사이트에서 로드되는지, config.php의 providers에 그 소셜이 있는지, disabled가 false인지 확인하세요.
본 사이트에서 소셜 로그인이 안 됨 이 플러그인과 무관하게 본 사이트의 소셜 설정(키, 콜백 주소) 문제입니다. 본 사이트에서 직접 로그인해 보세요.
티켓 테이블 오류 플러그인 폴더 쓰기 권한과 install.done 파일을 확인하세요. 테이블이 이미 있다면 파일만 만들어 두면 됩니다.
www로 접속하는 사이트가 있음 hub_host는 실제 접속 주소와 정확히 같아야 합니다. www가 붙은 주소를 본 사이트로 쓴다면 그대로 적어 주세요.

오류는 data/error.log에서 [SsoBridge]로 시작하는 줄로 확인할 수 있습니다.



9. 알아둘 점

  • 하위 사이트마다 세션은 따로 만들어집니다. 본 사이트에서 로그아웃해도 하위 사이트 로그인은 유지되고, 반대도 마찬가지입니다. 하위 사이트 세션은 코어의 기본 로그인 유지 시간을 따릅니다.
  • 로그인 후 돌아가는 곳은 로그인 버튼을 누르기 직전의 페이지입니다. 주소를 지정하려면 ?redirect=/경로를 붙이세요.
  • 이 플러그인은 로그인만 중계합니다. 회원가입 화면, 이메일 인증 등 코어의 다른 절차는 본 사이트에서 평소처럼 진행됩니다.


10. 데이터베이스

테이블 용도
sso_tickets 로그인 티켓 (token, member_id, ret_host, nonce, ip, used, created_at, expires_at). 사용 후 또는 만료 후 자동 정리

 

첨부파일 1개 회원전용

댓글1

D
DX관리자 2026.10.10 06:47
이 플러그인은 기본 플러그인으로 속합니다.
필수 설치를 권장합니다.
로그인 후 댓글을 작성할 수 있습니다.
Plugin 59개
51
전체 회원
1,569
전체 게시글
3,088
전체 댓글
15
오늘 방문
55,702
전체 방문
0
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록 로그인
목록