CSRF 오류 발생: oauth2-basic 플러그인을 사용한 OAuth2 로그인 문제

안녕하세요,

oauth2-basic 플러그인을 사용하여 OAuth2로 로그인하는 동안 “csrf_detected” 오류를 발생시켰습니다. 문제의 상세한 흐름은 다음과 같습니다:

  1. "로그인"을 클릭하면 다음으로 리디렉션됩니다:
    https://myforum/auth/basic_oauth2
  2. 이후 다음으로 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 토큰 처리에 문제가 있는 것인가요?

도움이나 조언을 주시면 감사하겠습니다!

감사합니다!

브라우저에서 사용하는 값과 백엔드가 기대하는 값이 일치하지 않을 때 이 오류가 발생하는 경우가 많습니다.

force_https를 활성화해 보시고 문제가 해결되는지 확인해 주시겠어요?

아니면 요청 경로(request path)가 무엇인가요?