동일 세션에서 SSO discourse 오류 발생

안녕하세요, 저는 Discourse를 통해 WordPress에 SSO로 로그인하고 있습니다. Discourse WordPress 플러그인을 사용했습니다.
처음에는 문제없이 잘 작동했습니다.

하지만 같은 세션에서(로그아웃하지 않은 상태) 관리자 링크인 /wp-admin/로 이동하려고 하면 대시보드로 리다이렉트되지 않고 로그인 양식에 다음과 같은 오류가 표시됩니다:

Expired Nonce

세션이나 쿠키에 문제가 있는 것 같습니다.
저는 Google 로그인으로 SSO를 사용하고 있어서 사용자들에게 혼란을 주고 있습니다.

현재 겪고 계신 문제는 서버의 객체 캐싱(object caching)으로 인해 발생하는 것 같습니다. 문제가 해결되는지 확인하기 위해 WordPress 테마의 functions.php 파일에 다음과 같은 코드를 추가해 보십시오:

add_filter('wpdc_sso_client_query', 'wpdc_custom_sso_client_query' );
function wpdc_custom_sso_client_query() {
    return wp_generate_password( 12, false );
}

이 문제에 대한 자세한 내용은 여기에서 확인하실 수 있습니다: Wordpress SSO Expired nonce - #15 by simon.

아래 코드로도 여전히 실패합니다.
Discourse는 Cloudflare와 호환되지 않는 것 같은데, 저는 웹 사이트 방어를 위해 Cloudflare를 사용하고 있습니다. 이렇게 사용해도 괜찮을까요?

쿠키를 삭제하고 다시 로그인하면 동작은 하지만, 동작 방식이 혼란스럽습니다.

아래 링크에서 멈춥니다:

/wp-login.php?discourse_sso_error=expired_nonce

이 규칙은 우회 테스트를 위해 설정한 것인데, Cloudflare 때문이 아닐 것 같아요:

제가 발견한 흥미로운 테스트 결과는 플러그인의 모든 링크가 실패한 것은 아니라는 것입니다.

이 링크는 정상적으로 작동합니다:

/?discourse_sso=7cygqwtc8aaz&redirect_to=https%3A2F2Fmyweb.net%2Fmy-account

즉, sso의 파라미터 "7"은 문제없다는 뜻입니다

사용자를 리디렉션하기 위해 제 링크를 이 파라미터로 리디렉션하도록 시도해 보았습니다.
링크의 파라미터를 확인하여 이 문제를 해결해 보실 수 있습니다.

"External Login Text"라는 텍스트에 있는 이 링크는 정상적으로 작동합니다.

All-Options-‹-Working24-—-working24-net

결국 해결 방법을 찾았나요? 저도 같은 문제를 겪고 있습니다.

여기에 제시된 해결 방법을 사용해보십시오: Wordpress SSO Expired nonce - #15 by simon.

감사합니다. 적용해 보았지만 문제가 여전히 지속됩니다.

@Golaxo 클라우드플레어도 사용 중이신가요?

그렇다면 클라우드플레어를 완전히 비활성화한 뒤 문제가 계속 발생하는지 확인해 보세요.

고마워, 친구. 욕을 좀 하다가 문제를 찾았어: Paid Membership Pro 플러그인이 충돌을 일으키고 있었거든. 아직 Discourse SSO에서 들어오는 사용자를 위해 WordPress에서 콘텐츠를 제한하는 방법을 알아내야 하지만, 적어도 이제 문제가 어디서 발생하는지 보이기 시작했어 :slight_smile: