Discourse의 SSO에 의존하는 새로운 WordPress 플러그인을 배포했는데, 라이브 배포 환경에서만 발생하는 이상한 버그가 있습니다.
로컬 환경에서는 로그인 후 redirect_url 파라미터를 사용하여 원래 페이지로 돌아올 수 있습니다. 하지만 라이브 사이트에서는 redirect_url이 wp-admin URL인 경우에만 SSO가 정상적으로 작동합니다. 예를 들어:
SSO가 정상 작동하는 경우…
https://www.example.com/core/wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fcore%2Fwp-admin%2F&reauth=1
SSO 인증에 실패하고 로그인/게시물 페이지로만 되돌아오는 경우
https://www.example.com/core/wp-login.php
이전에 비슷한 문제를 겪어 보셨나요? 어디서부터 살펴봐야 할지 아이디어가 있을까요? 문제가 지속된다면 wp-admin을 잡아낼 수 있도록 자체 리다이렉트 메커니즘을 구축해야 할 것 같습니다.
여기에는 잘못 구성된 리버스 프록시나 비슷한 문제가 있는 것 같습니다. 혹시 Cloudflare을 사용하고 계신가요?
네, Cloudflare입니다. Cloudflare에서 테스트해 볼 수 있는 설정이 있나요?
하하, 그건 내 결정이 아니에요. 사이트가 Cloudflare를 주요 캐시로 사용하고 있거든요. 리버스 프록시에 대해 좀 조사해서 CF 설정 중 조정할 수 있는 부분이 있는지 봐야 할 것 같아요.
pfaffman
(Jay Pfaffman)
4월 15, 2020, 4:33오후
6
클라우드플레어의 최적화로 인해 발생하는 문제에 대한 수십 개의 주제가 있습니다. 클라우드플레어를 CDN으로 사용하면서, discourse가 클라우드플레어를 통해 캐시할 수 있는 콘텐츠만 리디렉션하도록 설정할 수 있습니다.
또한 임시로 클라우드플레어를 비활성화하여 문제가 해결되는지 확인할 수도 있습니다.
페이지 규칙을 통해 discourse에서 cloudflare의 "performance"과 "rocket loader"를 단순히 비활성화하면, 아마도 이 문제를 해결할 수 있을 것입니다.
네, 이것은 문제가 복합적으로 얽혀 있는 다소 기이한 상황입니다. 일부는 WP 설치 디렉터리 때문인 것으로 보입니다. 일단 임시 해결책으로 /core/wp-admin으로 항상 리다이렉트되도록 작성해 두었고, 이후 제 자체 훅이 ?final_redirect_url을 감지하여 우리가 원하는 위치로 돌아가도록 동작하도록 처리했습니다.
simon
4월 15, 2020, 5:19오후
9
SSO 클라이언트 옵션이 활성화된 WP Discourse – WordPress plugin | WordPress.org 플러그인을 사용 중인 것으로 보입니다(디스코urse가 SSO 제공자). 이 내용이 맞는지 확인해 주시겠습니까?