WordPress DiscourseConnect 클라이언트 - 만료된 nonce

제가 아는 바로는 문제가 WordPress 객체 캐시 자체에 있는 것이 아닙니다. 객체 캐시는 기본적으로 요청(request) 간에 영속적(persistent)이지 않으니까요. 문제는 어떤 형태로든 영속적 캐싱이 활성화된 사이트에서 발생합니다: https://developer.wordpress.org/reference/classes/wp_object_cache/#persistent-caching. 이 기능은 플러그인을 통해 설정할 수 있지만, 일부 호스팅 제공업체(예: WP Engine)에서는 기본적으로 활성화되어 있습니다. WP Engine의 경우, 로그인 페이지에서는 객체 캐시를 활성화하지 않지만, 다른 모든 페이지에서는 익명 사용자를 대상으로 활성화하는 것으로 보입니다. 따라서 WP Engine에서는 “Discourse로 로그인” 링크가 로그인 페이지가 아닌 다른 페이지에 추가될 때만 문제가 발생합니다.

discourse_sso_url의 문제는 이 값이 항상 동일하게 설정되어 있을 때, 영속적 캐싱이 활성화된 사이트에서는 항상 동일한 nonce를 반환한다는 점입니다. discourse_sso 값을 기본값인 1 대신 무작위 문자열로 설정하면 캐시가 무효화됩니다. 이전에 테스트했을 때 항상 이렇게 작동했습니다. 현재는 테스트할 수 있도록 설정되어 있지 않습니다.

수정: 이 문제에 대한 추가 세부 사항은 여기에 있습니다: Discourse (as provider) + WP SSO nonce error - #14 by simon. 이 문제를 확인한 지 꽤 오래되었습니다. 당시 이 문제를 해결하기 위한 방법은 discourse_sso_url에 무작위 문자열을 추가하는 것 과 로그인 링크가 표시되는 페이지에서 페이지 캐싱이 활성화되지 않도록 확인하는 것(반드시 두 가지를 모두 해야 함)이었습니다. (그렇지 않으면 익명 사용자가 방문할 때마다 무작위 문자열이 고유하지 않게 됩니다.)