cafe24 SSO 연동 문제

foor4564의 이미지

안녕하세요, 신입 php개발자입니다.

현재 사내 자체 플랫폼(하이브리드 웹앱)에서 카페24 SSO 연동 기능을 개발 중에 있습니다.

기능에 대해서 먼저 설명드리자면,

자체 플랫폼으로 로그인한 사용자가 특정 버튼을 클릭하여, 카페24를 통해 관리중인 자사 쇼핑몰로 이동하게 됩니다.
여기서 자체 플랫폼 내에서 이미 한번 로그인을 하였기 때문에, 카페24 쇼핑몰 쪽에서 별도의 회원가입 절차나 로그인 절차 없이 바로 넘어가서 카페24 쇼핑몰을 이용할 수 있게 하는 것 입니다.
(이게 제가 일단 이해한 SSO의 개념입니다.)

그래서 이러한 기능 구현을 위해, 카페24 내에서 SSO 연동 기능을 이용하기로 하였고, 아래 링크가 현재 카페24에서 제공한 가이드 라인입니다.

https://ecsupport.cafe24.com/board/tip/read.html?no=1782&board_no=5

위 링크에 나와있는 내용을 보게되면, 일단 Oauth 2.0 버전을 차용하여 제작되었다고 하고, 간략하게 프로세스를 그림으로 표현해 놓았습니다.

그리고 그림 아래 부분에 SSO연동 기능 구현을 위해 직접 기재해야 되는 부분도 설명되어있습니다.

문제는 HTTP 요청을 하기 위해 필요한 파라미터 값들에 대해서는 설명이 되어있고, 실제 어떤 경로로 Request를 보내야하는지에 대한 URL 부분이 전혀 없습니다.
여기서 말하는 URL은 단지 [ Authorize Redirect URL (로그인 요청 URL) ] 이라고만 표시되어있고, 이 URL은 연동하고자 하는 서비스의 URL(자체 플랫폼에서 SSO요청을 보내는 URL) 이라고 합니다.

위에서 말한대로 진행한다고 하면 결국 Authorization Code를 요청하는 URL은 아래와 같게 됩니다.
https://example.com/go_mall.php?
response_type=code&
client_id=exampleid&
redirect_uri=https://example.com/sso_authcode.php&
state=examplecsrf

결국, 위의 URL은 단순히 'https://example.com/go_mall.php' 쪽으로 [response_type, client_id, redirect_uri, state]에 대한 파라미터 값을 전달해주는 거 아닙니까?

그래도 혹시나 몰라 저렇게 요청하면 될줄 알고, 수십번 시도해보았지만 결국 그냥 'https://example.com/go_mall.php' 만 반환되고 끝입니다.

그래서 Oauth 2.0 쪽 문서를 구글링하여 찾아본 결과, 제가 이해한 바로는 실제 SSO를 관리하는 서버가 저희 플랫폼이 아닌 카페24 쪽에 있는 데, 그 경로로 들어가기 위한 Request URL이 필요한 것 같습니다.

그렇다면, Authorization Code를 받기 위한 Request URL의 형식은,
https://example.com/go_mall.php/ ( SSO 요청 경로 ) ? response_type=code&........

이게 맞지 않나 싶습니다.

그래서 혹시나 제가 잘못 이해했나 싶어서 카페24 쪽 문의센터로 현재 네 차례나 같은 질문을 했으나, 돌아오는 답변은
위 링크의 가이드라인 뿐이였고, 좀더 진중하게 개발담당부서분에게 요청을 부탁한다고도 질문을 작성해보았으나, 매한가지 답변은 같았습니다.

------------------------------------------

제가 정말 가이드라인에서 해답을 못 찾았거나, 이해 자체를 못한거라면 냉철한 피드백 부탁드리겠습니다.
만약에 제가 질문한 내용이 어느정도 타당성이 있다면, 카페 24측에서 실제 SSO 연동자체를 지원하는건지 안하는건지가 정말 궁금하긴 합니다.

많은 관심 부탁드리면서, 냉철한 피드백 부탁드리겠습니다.

감사합니다.

세벌의 이미지

cafe24에 전문가가 적은가 봅니다.
계속 연락하셔야 할 듯.

foor4564의 이미지

1:1문의 통해서 5번 요청드렸는데, 4번째까지는 전혀 도움이 되지 않았고,
마지막에는,

--------------------------------------------------------
고객님,
카페24 내에서 제공하는 url은 따로 존재하지 않습니다.
이전 답변에 예시사항을 들어주신 것으로 확인되시는데, 구체적으로 네이버페이로 예를 들었을 때
네이버페이 입점 후 해당 키값을 받아, 그 키값을 카페24 솔루션에 저장을 하는 형식으로
네이버페이와 카페24와 연동하는 작업이 이루어지는데, 해당 키값을 카페24내에서 제공하지 않습니다.
(즉, 개발사 또는 연동업체에 문의하여 해당 부분 안내 > 자체적으로 할 경우, 자체적으로 생성)
--------------------------------------------------------

이렇게 답변이 오더군요.

저말은 제가 이해했을때는, 별도로 SNS를 통한 SSO연동을 제외하고는 별도로 SSO인증 요청을 받을 수 없다는 걸로 보이는데, 제가 이해한게 맞는지 모르겠습니다.

pynoos의 이미지

사내 자체 플랫폼이 OAuth2.0 프로토콜기반의 ID 제공자가 되는 것이죠?

걸어두신 링크는 Cafe24가 외부 ID를 받는 방법에 대해 기술한 문서입니다.
예를들어 페이스북이나 카카오같이 OAuth2.0 ID 제공자들을 연동하는 문서입니다.

우선, Cafe24 기반 쇼핑몰에서 카카오나 페이스북 연동을 먼저 해보시는게 어떨까합니다.
그러면, 제공자가 해야하는 일을 알 수 있으리라 생각됩니다.

foor4564의 이미지

네, 말씀해주신대로 저희 회사 내 자체 플랫폼(웹앱)에서 카페24가 소유하고 있는 해당 SSO서버로 인증키(Authorization Code)를 받기위해, 가이드라인에 적혀 있는 파라미터에 해당되는 값들을 전달하려고 합니다.

그런데 문제가, 다른 SNS를 통한 SSO연동 가이드라인에 따르면

1) 페이스북
https://sample.com/Api/Member/Oauth2ClientCallback/facebook/

2) 카카오톡
https://sample.com/Api/Member/Ouath2ClientCallback/kakao/

3) 네이버
https://www.sample.com(네이버 같은 경우 그냥 도메인 주소로만 콜백URL을 받고 있다고 합니다.)

4) 구글
https://sample.com/Api/Member/Oauth2ClientCallback/googleplus/

이런식으로 나와있습니다.

그러면, SNS를 통하지 않고 그냥 자체 플랫폼에서 전송할떄는 예를들면
ex) https://sample.com/Api/Member/Ouath2ClientCallback/cafe24/

이런식으로라도 실제 요청보내는 저희 웹앱 URL 뒤에 붙는 경로가 존재해야되는데, 이부분에 대한 가이드라인이 전혀 없는 상태입니다.

혹시 제가 이해한 것이 틀린건가요?

pynoos의 이미지

제 말을 잘못 이해하신것 같습니다 ;-)

지금 작성하고 계신 기능이 정말 Provider 맞나요?

저 문서에 따르면, 카페24가 타사의 회원 인증정보를 받기 위해 OAuth2.0 연동을 지원하는 것입니다.
즉 Consumer 기능으로서의 연동방법을 기술한 것입니다.

카페24의 이미지

FAQ 에 있는거는 카페24가 SSO 클라이언트로서의 역할인겁니다

당연히 SSO 서버는 직접 구축하셔야 해요

페이스북로그인 카카오로그인 네이버로그인 모두 자기들이 SSO 서버인거에요

현재 사내 자체 플랫폼(하이브리드 웹앱)에서 카페24 SSO 연동 기능을 개발 중에 있다고 하셨는데

그러면 사내 자체 플랫폼 아이디로 로그인하는거니까 SSO 서버랑 인증서버는 사내 자체 플랫폼에 있어야죠

사내 자체 플랫폼에서 갖고계신 아이디 암호를 카페24가 갖고있을수가 없으니 당연한 내용입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.