cmdntd
(cmdntd)
9월 26, 2020, 1:53오후
1
안녕하세요, 저는 Discourse를 통해 WordPress에 SSO로 로그인하고 있습니다. Discourse WordPress 플러그인을 사용했습니다.
처음에는 문제없이 잘 작동했습니다.
하지만 같은 세션에서(로그아웃하지 않은 상태) 관리자 링크인 /wp-admin/로 이동하려고 하면 대시보드로 리다이렉트되지 않고 로그인 양식에 다음과 같은 오류가 표시됩니다:
Expired Nonce
세션이나 쿠키에 문제가 있는 것 같습니다.
저는 Google 로그인으로 SSO를 사용하고 있어서 사용자들에게 혼란을 주고 있습니다.
simon
9월 26, 2020, 5:24오후
2
현재 겪고 계신 문제는 서버의 객체 캐싱(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 .
cmdntd
(cmdntd)
9월 27, 2020, 3:46오전
3
아래 코드로도 여전히 실패합니다.
Discourse는 Cloudflare와 호환되지 않는 것 같은데, 저는 웹 사이트 방어를 위해 Cloudflare를 사용하고 있습니다. 이렇게 사용해도 괜찮을까요?
쿠키를 삭제하고 다시 로그인하면 동작은 하지만, 동작 방식이 혼란스럽습니다.
아래 링크에서 멈춥니다:
/wp-login.php?discourse_sso_error=expired_nonce
cmdntd
(cmdntd)
9월 27, 2020, 4:45오전
4
이 규칙은 우회 테스트를 위해 설정한 것인데, Cloudflare 때문이 아닐 것 같아요:
cmdntd
(cmdntd)
9월 27, 2020, 5:07오전
5
제가 발견한 흥미로운 테스트 결과는 플러그인의 모든 링크가 실패한 것은 아니라는 것입니다.
이 링크는 정상적으로 작동합니다:
/?discourse_sso=7cygqwtc8aaz&redirect_to=https%3A2F2Fmyweb.net %2Fmy-account
즉, sso의 파라미터 "7"은 문제없다는 뜻입니다
사용자를 리디렉션하기 위해 제 링크를 이 파라미터로 리디렉션하도록 시도해 보았습니다.
링크의 파라미터를 확인하여 이 문제를 해결해 보실 수 있습니다.
"External Login Text"라는 텍스트에 있는 이 링크는 정상적으로 작동합니다.
Golaxo
(Ágoston László)
2월 2, 2021, 1:32오후
6
결국 해결 방법을 찾았나요? 저도 같은 문제를 겪고 있습니다.
simon
2월 2, 2021, 8:56오후
7
Golaxo
(Ágoston László)
2월 3, 2021, 5:25오후
8
감사합니다. 적용해 보았지만 문제가 여전히 지속됩니다.
angus
(Angus McLeod)
2월 4, 2021, 2:08오전
9
@Golaxo 클라우드플레어도 사용 중이신가요?
그렇다면 클라우드플레어를 완전히 비활성화한 뒤 문제가 계속 발생하는지 확인해 보세요.
Golaxo
(Ágoston László)
2월 4, 2021, 4:12오후
10
고마워, 친구. 욕을 좀 하다가 문제를 찾았어: Paid Membership Pro 플러그인이 충돌을 일으키고 있었거든. 아직 Discourse SSO 에서 들어오는 사용자를 위해 WordPress에서 콘텐츠를 제한하는 방법을 알아내야 하지만, 적어도 이제 문제가 어디서 발생하는지 보이기 시작했어