이 문제는 WordPress에 Discourse 사이트를 통해 로그인할 때 발생하는 것으로 추정됩니다. 그렇다면 WordPress에서 생성된 nonce가 만료된 것이 원인이 됩니다. 이는 Object Caching이 활성화된 WordPress 사이트에서 발생하는 현상입니다.
해결 방법 중 하나는 “Login With Discourse” 링크가 있는 페이지에서 Object Cache를 비활성화하는 것입니다. 이 방법을 사용할 경우, 익명 사용자를 위한 Object Cache가 비활성화되어 있는지 확인하세요.
또 다른 해결 방법은 여기에 나와 있습니다: Wordpress SSO Expired nonce - #15 by simon. 해당 게시물에 있는 함수는 그대로 복사하여 WordPress 테마의 functions.php 파일에 붙여넣을 수 있습니다.
해당 함수는 Login With Discourse URL에 랜덤 문자열을 추가합니다. 이 랜덤 문자열은 WordPress가 캐시를 무효화하고 사용자에게 새로운 nonce를 생성하도록 트리거합니다. @angus님, 이 부분은 플러그인 코드에 추가되어야 할 것 같습니다: wp-discourse/lib/sso-client/sso-client-base.php at main · discourse/wp-discourse · GitHub. 이로 인한 단점은 없으며, 각 방문 시마다 새 nonce를 생성하는 대신 object caching으로 인해 오래된 nonce가 사용되는 문제를 해결할 다른 방법이 없다고 생각합니다.