SSO 리다이렉트 문제

WP Discourse 플러그인을 통해 Discourse를 WordPress와 통합하고 있으며, WordPress를 Discourse Connect 제공자로 사용하고 있습니다. 그러나 인증되지 않은 사용자가 Discourse 인스턴스를 방문한 후 로그인이 필요한 버튼을 클릭할 경우 무한 리다이렉트 루프에 갇히는 문제가 발생하고 있습니다.

원하는 동작은 다음과 같습니다: 사용자가 Discourse 로그인 버튼을 클릭 → WordPress 로그인 페이지로 리다이렉트 → 사용자가 인증을 완료하고 이전에 있던 Discourse 페이지로 다시 리다이렉트됩니다. 이미 인증된 사용자가 인증 후 Discourse 인스턴스를 방문하는 경우 현재는 문제가 없습니다. 이 오류는 인증되지 않은 사용자가 처음 Discourse 인스턴스를 방문할 때 발생합니다.

현재 동작은 다음과 같습니다: 사용자가 Discourse 로그인 버튼을 클릭 → https://[discourse-instance]/session/sso?return_path=%2Ft%2F[사용자가 이전에 있던 discourse 페이지]%2F16 로 리다이렉트됨 → https://[wordpress-site]/?sso=[SSO 토큰]%3D%3D&sig=[서명 토큰] 로 리다이렉트됨 → https://[wordpress-site]/?sso=[SSO 토큰]%3D%3D&sig=[서명 토큰]&redirect_to=%2F%3Fsso%[SSO 토큰]%253D%253D%26sig%3D[서명 토큰] 로 리다이렉트됨 → 그리고 이 사이클이 재귀적으로 반복되어 브라우저가 "리다이렉트가 너무 많습니다"라는 오류를 출력할 때까지 계속됩니다.

이 문제를 해결하는 스레드를 찾지 못했으며, 가장 유사한 스레드는

입니다. 하지만 모든 곳에 SSL이 활성화되어 있으며 이 문제는 모든 브라우저에서 발생합니다. 이 문제를 해결하는 방법에 대한 제안이 있을까요?

Chrome 97에는 리다이렉트 시 쿠키 처리와 관련된 버그가 포함되어 있으며, 이로 인해 특정 상황에서 DiscourseConnect가 정상 작동하지 않을 수 있습니다. Google에서 수정 사항을 배포할 때까지 기다리는 동안, Discourse에 임시 해결책을 추가했습니다. Discourse 사이트를 최신 버전으로 업그레이드하면 문제가 해결될 것입니다. 한번 시도해 보시고 작동하는지 알려 주시겠어요?

(임시 해결책은 이 커밋에 추가되었습니다)

답변해 주셔서 감사합니다. 최신 버전을 사용 중인지 확인해 보았지만, unfortunately 에러가 여전히 발생하고 있습니다. 저희 포럼은 Discourse로 호스팅되고 있으므로, 정기적으로 자동으로 업데이트되어야 합니다. 에러는 이전과 동일하게 유지되고 있는데, 다른 시도해 볼 방법이 있을까요? Discourse 호스팅 설정 중 이 문제를 일으킬 수 있는 것이 있을까요?

안녕하세요 @dbwhite,

  1. WP Discourse의 “DiscourseConnect” 설정에서 "Verbose DiscourseConnect Logs"를 활성화해 주시겠어요?
  2. 문제를 다시 재현해 주세요.
  3. WP Discourse의 “Logs” 메뉴로 이동하여 로그를 "Download"해 주세요.

그 후 로그를 DM으로 보내주시면 어떤 일이 일어나고 있는지 자세히 확인해 드리겠습니다. 참고로 로그에는 개인 식별 정보나 비밀 정보가 포함되어 있지 않습니다.

@angus, @dbwhite 문제의 원인은 WordPress 사이트가 Woocommerce를 사용 중인 경우일 수 있습니다. Woocommerce는 로그인 리디렉트를 추가하는데, 이로 인해 DiscourseConnect에서 문제가 발생할 수 있습니다. 이러한 리디렉트는 GitHub - scossar/wp-discourse-woocommerce-support: Integrates the wp-discourse plugin with WooCommerce · GitHub 플러그인을 설치하고 활성화하거나, 해당 플러그인의 readme에 제공된 코드 스니펫을 사이트 테마에 추가하여 덮어쓸 수 있습니다.

여기서 설명되고 있는 리디렉트 문제는 과거에 다른 Woocommerce 사이트에서 제가 확인했던 상황과 유사해 보입니다. 그 경우들은 제가 링크한 WordPress 플러그인을 설치하여 해결되었습니다.

이것이 문제의 원인이라면, WP Discourse 플러그인에 Woocommerce 지원을 직접 추가하는 방안을 검토해 볼 가치가 있을 것 같습니다.

매우 도움이 될 것 같습니다.

OP가 설명한 것과 정확히 같은 문제는 아니지만, 로그인 후 사용자를 원래 있던 discourse 포럼 위치로 다시 리다이렉트하는 데 어려움을 겪고 있습니다 :disappointed_face:

WP Discourse WooCommerce Support 플러그인을 설치하고 활성화하면 해당 문제가 해결됩니까?

여기 업데이트를 하나 남기려고 합니다. 우리가 사용하던 플러그인 중 하나가 WordPress 함수 wp_login_url()의 반환값에 간섭을 일으키고 있었던 것이었습니다. 해당 플러그인을 제거한 후로는 모든 것이 정상적으로 작동했습니다!