3월 24일부터 Discourse API가 요청에 응답하는 방식에 변화가 생긴 것 같습니다.
우리 측에서는 코드 변경 사항이 없으며 Api-Key도 여전히 유효한 상태인데, 사용자 정보를 가져오려 시도하는 백엔드 서비스 중 하나가 users/by-external/{id}.json을 호출하기 시작하면서 실패하기 시작했습니다.
이 요청에는 문서에 따라 필수로 지정된 Api-Key와 Api-Username 헤더를 보내고 있습니다. 이러한 요청은 수년간 정상적으로 작동해 왔습니다.
하지만 현재 이 엔드포인트로 보내는 모든 요청이 403 오류와 함께 실패하며, 응답 본문은 다음과 같습니다:
{
"errors": [
"You are not permitted to view the requested resource."
],
"error_type": "invalid_access"
}
/u/{username}.json을 요청할 때도 동일한 문제가 발생합니다.
놀랍게도 헤더를 보내지 않으면, 문서상 인증 헤더가 필요한 것으로 명시된 이 요청들이 실제로는 요청한 데이터를 반환합니다. 인증된 것처럼 동작하는 것입니다.
잘못된 Api-Key를 보내서도 테스트해 보았더니, 약간 다른 메시지와 함께 응답을 받았습니다:
{
"errors": [
"You are not permitted to view the requested resource. The API username or key is invalid."
],
"error_type": "invalid_access"
}
이것은 키가 받아들여지고 있지만, 해당 리소스에 대한 액세스 권한이 없다고 잘못 보고하고 있으며, 동시에 인증되지 않은 요청에는 전체 액세스 권한을 부여하고 있음을 시사합니다.
또한 모든 사용자/글로벌 옵션이 설정된 완전히 새로운 Api-Key로 테스트해 보았지만, 동일한 결과를 얻었습니다.