안녕하세요, 조언을 구하고 싶습니다. 이번 주에 SSO가 작동하지 않기 시작했는데, 어제 모든 문제를 해결했다고 생각했습니다(작동했거든요, 정말입니다
참고: 어제와 오늘의 "New Users"를 확인해 봤는데, 두 날 모두(수정 후) 새로운 사용자가 있었습니다. 그런데 지금은 다시 깨져버렸네요…). 불행히도, 제가 한 업데이트가 오늘은 작동하지 않습니다.
문제: 사용자가 새 계정을 생성할 수 없고, 로그아웃한 사용자가 다시 로그인할 수 없습니다.
다음 라우트에서 discourse 서버에 400 에러가 발생하고 있음을 발견했습니다:
403: GET: discourse-url/users/by-external/USER-ID.json?
참고: 최근 API 문서에서 이 라우트가 존재하지 않는다는 것을 발견했습니다(그동안 작동했던 것 같지만요). 라우트는 다음과 같이 보입니다: https://discourse.example.com/u/by-external/{external_id}.json
404: POST: discourse-url/admin/users/sync_sso?
? 기호가 끝에 있는 이유는 URL을 생성하는 함수에 선택적 파라미터 필드가 있기 때문이며, 이 두 라우트의 경우 모든 데이터는 폼 바디나 헤더로 전송됩니다.
저는 다음 라이브러리를 사용하고 있습니다.
업데이트한 내용(그리고 문제를 해결했다고 생각했던 부분):
모든 요청에서 Api-Key와 Api-Username을 쿼리 파라미터로 전송하고 있었습니다. 지난 몇 달간 관리자 패널에서 요청에 오래된 헤더를 사용하고 있다는 경고가 표시되고 있음을 확인했습니다. 이 게시물로 링크되어 있었고, 주요 내용은 다음과 같습니다:
비추천 경고!
2020년 4월 6일, HTTP 헤더 기반 인증이 아닌 모든 인증 방식(rss, mail-receiver, ics 라우트 제외)에 대한 지원을 중단했습니다. 이는 쿼리 파라미터나 HTTP 바디에api_key와api_username이 포함된 API 요청이 곧 더 이상 작동하지 않게 된다는 것을 의미합니다. API 요청을 업데이트하여 인증에 HTTP 헤더를 사용하는 방법에 대해서는 아래 cURL 요청 예시를 참고하세요.
모든 요청을 업데이트했으며, 이제 모든 요청에서 Api-Key와 Api-Username이 헤더에 포함되어 있고 콘텐츠 타입은 multipart form data로 설정되어 있습니다.
이 문제를 디버깅하기 위해 무엇을 살펴봐야 할지 조언을 주실 수 있다면 매우 감사하겠습니다. 어제 퇴근 직전까지는 100% 가까울 정도로 이 시스템이 작동하고 있었다고 확신합니다. 제 계정으로 로그인과 로그아웃을 할 수 있었고, 새 계정도 생성할 수 있었습니다.
추가 정보가 필요하시면 알려주세요. 감사합니다!