SSO: 로그아웃이 되지 않습니다

조언을 구합니다. :slight_smile:

저희는 WP를 SSO 제공자로 사용하고 있습니다 (MemberPress를 통해 WP에서 Discourse와 LMS 콘텐츠 접근을 관리 중입니다). 새 사용자 가입과 로그인은 완벽하게 작동하지만, 로그아웃이 안 되는 것 같습니다.

?request=logout 리디렉트를 추가했는데, 로그아웃 후 새로고침을 하면 즉시 다시 로그인된 상태로 돌아옵니다.

처음에는 다른 브라우저 탭에서 WP를 열어둔 것이 원인인 줄 알았지만, WP에서 로그아웃하고 탭을 닫은 후에도 동일한 현상이 지속됩니다.

정말 해결이 눈앞에 있는 것 같습니다. 이 문제를 해결할 수 있도록 트러블슈팅 조언을 나눠주실 분이 계셨으면 좋겠습니다.

감사합니다.

(2) 연속 로그아웃을 시연하는 작은 gif입니다.

그리고 WP의 SSO 설정 스크린샷입니다:

그리고 Discourse의 설정입니다:

모든 설정이 올바르게 되어 있는 것으로 보입니다. 이 사이트가 일반적인 WordPress 사이트인가요, 아니면 멀티사이트(multisite) 환경의 일부인가요? 네트워크에서 메인 사이트 외 다른 사이트와의 로그아웃 동기화에 문제가 있을 수 있습니다.

화면 녹화 영상을 확인해 본 결과, Discourse 사이트가 login required(로그인 필요)로 설정되어 있는 것으로 보입니다. 현재 일어나는 일은 다음과 같습니다. Discourse가 SSO 요청을 담아 WordPress 사이트로 리디렉션하고, WordPress에 이미 로그인된 상태이므로 자동으로 로그인 처리가 됩니다. 정상적인 동작이라면 로그아웃된 사용자로 WordPress 로그인 페이지에 도달해야 합니다.

Discourse와의 로그아웃 동기화는 WordPress의 clear_auth_cookie 훅에 의존합니다. 사이트의 다른 플러그인이 이 과정을 방해하고 있을 가능성이 있습니다.

시몬, 감사합니다. 단일 WP 사이트이고 쿠키가 합리적인 해결책으로 보입니다. 이 부분을 먼저 살펴볼게요.

좋은 조언 감사합니다!

브라이언 드리그스 //// tgp

개발용 사이트가 있다면, WP Discourse를 제외한 모든 플러그인을 비활성화하여 문제가 지속되는지 확인해 보세요. 개발용 사이트가 없다면, Health Check 플러그인을 사용하여 해당 사용자의 세션에서 플러그인을 비활성화해 볼 수 있습니다. 해당 플러그인을 이용해 세션에서 플러그인을 비활성화하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다: Troubleshooting using the Health Check – Make WordPress Support.

뿅! 개발 사이트는 없지만, 헬스 체크 플러그인이 한 번에 완벽하게 작동했어요. MemberPress와 auth_cookie를 파고들어야 할 것 같아요. Simon, 감사합니다.

다른 사람이 필요할 수 있으니 제가 취한 단계를 정리해 둡니다:

  1. Health Check 플러그인을 설치했습니다.
    – 사이트를 문제 해결(Troubleshooting) 모드로 전환했습니다.
    – WP-Discourse 플러그인을 활성화했습니다.
  2. Discourse 사이트를 열었습니다.
    – 로그아웃했습니다.
    – WP 로그인 페이지로 리다이렉트되었습니다(로그인 양식이 없었음).
    – Discourse에 다시 로그인할 수 없었습니다.(원하는 기능.)
  3. MemberPress를 활성화했습니다.
    – (로그인 페이지가 MemberPress에서 생성된 사용자 이름/비밀번호 필드를 사용한다는 것을 깨달았습니다.)
    – 로그인 양식이 다시 나타났습니다.
  4. Discourse 사이트를 열었고, 이미 로그인된 상태였습니다.
  5. 로그아웃을 시도했는데, Discourse로 루프를 돌며 리다이렉트되었고 여전히 로그인된 상태였습니다.

2007년부터 WordPress를 사용해 왔는데, 이 플러그인은 이번에 처음 알게 되었습니다. 다시 한번 감사드립니다, Simon!

네, 문제 해결에 정말 유용합니다.

MemberPress에서 무슨 일이 일어나고 있는지 확인해 보고 싶지만, 유료 플러그인입니다. 문서를 살펴본 결과, 플러그인의 옵션 페이지에서 설정할 수 있는 MemberPress 로그아웃 리디렉션 URL이 있는 것 같습니다. 문제가 그 설정과 관련이 있을 수 있습니다.

어떻게 도와드릴까요?

로그아웃 리다이렉트 설정을 발견하여 몇 가지 대상(target)을 설정해 보았지만, 효과가 없는 것 같습니다.

외부 사이트에서 Discourse 로그아웃 방법을 찾고 있습니다. 문서를 찾아봤는데, 이 게시물에서 언급된 대로 API POST 요청을 보내는 것이 방법인 것 같습니다.

문제는 API 요청을 어떻게 보내야 하는지 잘 이해가 안 되고, 다음 단계로 어떻게 진행해야 할지 막막합니다. Postman을 다운로드해서 실험을 해보고 있지만, 여전히 막막합니다. 필요한 API 요청을 어떻게 생성해야 하는지, 그리고 이후 외부 사이트에 어떻게 구현해야 하는지 잘 모르겠습니다.

이 문제를 해결하는 방법에 대한 조언이 있을까요?

외부 사이트에 대한 세부 정보를 알려주시면, 이곳에서 도움을 드릴 수 있는 분이 계실 수 있습니다.

이 사이트는 MemberPress를 사용하는 WordPress 사이트이며, 내 Discourse 포럼의 SSO 제공자 역할을 합니다. WordPress에서 로그아웃하면 URL로 리다이렉트할 수 있는데, 이때 Discourse에서도 동시에 로그아웃되도록 하고 싶습니다. 아니면 functions.php에 추가할 수 있는 PHP 함수를 통해 API 요청을 보내는 방식도 가능할까요?

SSO를 위해 WP Discourse 플러그인을 사용하고 계신가요? 그렇다면 WordPress에서 로그아웃하면 Discourse에서도 로그아웃되어야 하지만, WordPress에서 Memberpress 플러그인을 사용할 때 이 기능이 작동하지 않는다는 최근 보고가 있습니다: SSO: Unable to logout. 같은 문제를 겪고 계신가요?

네, 해당 플러그인을 사용 중인데 같은 문제인 것 같습니다.

좋아요! 내일 그 문제를 해결해 보겠습니다.

당신이 진정한 사내니까. 고마워, 시몬. :slight_smile:

정말 큰 도움이 될 것 같아요! 추가로 필요하신 정보가 있으시면 언제든 말씀해 주세요. 감사합니다!

문제를 재현하는 데 조금 애를 먹고 있습니다. 두 분의 WordPress 사이트 중 하나에 계정을 만들 수 있다면, 어떤 일이 일어나고 있는지 확인할 수 있을 것 같습니다. 관리자 권한은 필요하지 않습니다. 가능하시다면, 사이트 정보를 개인 메시지로 보내 주세요.

@simon 님이 회원 가입을 처리해 주셨습니다. 비밀번호 설정을 위한 이메일을 받으셨을 것입니다. 알려주세요. 감사합니다.

저도 제 사이트에 계정을 만들고, 세부 정보를 DM으로 보냈습니다.

@TGP Discourse의 logout redirect 설정을 https://www.thegearheadproject.com/?request=logout으로 변경해 볼 수 있을까요? www가 없는 요청은 www URL로 리디렉션되는 것 같지만, 리디렉션 시 request=logout 쿼리 파라미터가 유지되지 않는 것으로 보입니다.

이것이 문제를 해결하지는 못할 수 있지만, 원인이 될 가능성을 배제해 보는 것이 좋겠습니다.

이 사이트들의 로그아웃 문제가 서로 무관할 가능성이 높아 보입니다.

@robtech 님, Discourse 사이트에서 로그아웃하면 WordPress 사이트에서도 함께 로그아웃되므로, 이 부분은 정상적으로 작동하고 있는 것으로 보입니다. 제가 발견한 문제는 WordPress에서 Discourse로의 로그아웃 동기화입니다. WordPress 사이트에서 로그아웃해도 Discourse 사이트에서는 로그아웃이 되지 않습니다.

WP Discourse Connection 탭에서 설정한 API 키와 Publishing Username(게시 사용자 이름)이 올바른지 확인해 주시겠습니까? 관리자용 API 키와 사용자 이름을 사용해야 합니다. 가장 쉬운 방법은 사이트의 Master API Key를 사용하고 게시 사용자 이름으로 'system’을 사용하는 것입니다. 이 페이지의 옵션을 저장한 후 “connected to Discourse”(Discourse에 연결됨)라는 알림이 표시되어야 합니다. 이 섹션에는 관리자 자격 증명이 필요하며, 이를 통해 WordPress에서 로그아웃할 때 사용자가 Discourse에서도 로그아웃될 수 있습니다.

이 방법으로 문제가 해결되지 않으면 알려 주세요.