SSO가 작동하지 않습니다 🤔

여러분 안녕하세요!

PHP 백엔드에서 SSO 인증을 처리하고 있습니다. 먼저 SSO URL(Communauté et formation pour entrepreneurs)로 curl 요청을 보내 SSO 페이로드와 SIG를 받은 후, 이를 기반으로 올바른 리다이렉트 URL을 생성하기 위해 자체 페이로드를 생성합니다.

여기서 이상한 일이 생겼습니다…

브라우저로 https://forum.latranchee.com/session/sso에 접속하여 SSO와 SIG를 복사해서 스크립트에 붙여넣으면 최종 리다이렉트 URL이 정상적으로 작동합니다.

하지만 CURL을 통해 값을 가져오면 최종 리다이렉트 시 오류 메시지가 표시되고 로그에 다음과 같은 내용이 기록됩니다:

Verbose SSO log: Nonce has already expired

정말 막막합니다… 문제가 갑자기 발생해서 현재 사용자들이 로그인할 수 없는 상태입니다.

Discourse 측에서 봇이 /session/sso를 악용하는 것을 방지하기 위해 무언가를 변경한 건가요?

네, 이제 nonce는 생성된 사용자의 세션에 첨부됩니다. 현재 겪고 계신 문제는 다음 부분과 관련이 있는 것으로 보입니다:

curl 요청을 보내는 대신, 인증될 사용자는 사이트의 로그인 버튼을 클릭하거나 애플리케이션에서 /session/sso로 리디렉션되어 /session/sso를 방문해야 합니다. 그렇게 하면 Discourse가 사용자를 애플리케이션으로 다시 리디렉션합니다. 해당 페이로드에서 발견되는 nonce는 유효할 것입니다.

문제를 해결하기 위해 그렇게 해야 했지만, 제 비동기 로그인 프로세스가 깨져버립니다. :frowning: 그 방식으로 처리하는 걸 정말 좋아했어요.

Axios를 통해 시도해 보기도 했습니다. 요청이 클라이언트에서 오기 때문에 동작할 것으로 예상했는데, 이것도 작동하지 않는 것 같습니다.

비동기 로그인 프로세스를 구현할 수 있는 방법이 떠오르신다면, 어떤 팁이든 환영합니다! 어쨌든 답변 주셔서 감사합니다. 정말 감사드립니다.