안녕하세요,
oauth2-basic 플러그인을 사용하여 OAuth2로 로그인하는 동안 “csrf_detected” 오류를 발생시켰습니다. 문제의 상세한 흐름은 다음과 같습니다:
- "로그인"을 클릭하면 다음으로 리디렉션됩니다:
https://myforum/auth/basic_oauth2 - 이후 다음으로 302 리디렉션이 수행됩니다:
https://myforum/auth/failure?message=csrf_detected
재현 방법:
로그인을 시도할 때, 다음 curl 명령이 요청을 시뮬레이션합니다:
curl -vvvv 'https://myforum/auth/oauth2_basic' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
-H 'accept-language: zh-CN,zh;q=0.9' \
-H 'cache-control: max-age=0' \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'cookie: _forum_session=k9aHXc2cWsx%2FMBL26KTV33PSo8jC9Am47UBoT5Zq9qYAm2nKoU2BJkAR1bgc6U%2BYqsL3%2F3sjiYRmJoNr3JuvzkjdYl%2FjzT9djkq%2BYjSmN16EUEdZIdOl%2Fiv1MohQkthKSnOpUdXLTxHZBezxTg4O%2Bs6LUZ7HzCjpT3lxm24FS4xOPkU5QnSHBM%2F7GazZRhGywXsHKGdJ6fY0kVo%2BJHNNHBZu--qQKGn36Xh7jvKPEs--I1b3oz4nv2xe%2Fmi0bKPLog%3D%3D' \
-H 'origin: https://myforum' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36' \
--data-raw 'authenticity_token=doSNHEhj23HibAEZf0znqzevPNPq9Bub69Xnq18mKARw8GiGP-cokbg7k0qUvRgH3kayeJK7_-boeoOvX6GKqQ'
그 결과, “csrf_detected” 메시지와 함께 실패 페이지로 302 리디렉션됩니다:
< HTTP/2 302
< location: /auth/failure?message=csrf_detected
조사 결과:
authenticity_token매개변수를 생략하면 로그인 플로우가 정상적으로 작동하며, 예상대로 OAuth2 로그인 페이지로 리디렉션됩니다:
질문:
/auth/oauth2_basic에 대한 GET 요청에 authenticity_token이 포함되면 시스템이 이를 확인하고 토큰이 무효인 경우 CSRF 오류를 발생시키는 것 같습니다. 하지만 저는 아직 로그인하지 않은 상태인데, 이 단계에서 어떻게 authenticity_token을 가질 수 있을까요?
이것이 예상되는 동작인지, 아니면 초기 로그인 과정에서 CSRF 토큰 처리에 문제가 있는 것인가요?
도움이나 조언을 주시면 감사하겠습니다!
감사합니다!