HTTP 401 오류와 같은 NoSQL용 Azure Cosmos DB의 무단 예외는 일반적으로 요청의 MAC 서명이 예상 값과 일치하지 않을 때 발생합니다. 잘못된 키, 불완전한 키 회전 또는 쓰기 작업에 읽기 전용 키를 사용하는 것이 이 오류 메시지의 원인인 경우가 많습니다.
증상
무단 예외의 일반적인 증상은 HTTP 401 오류 메시지를 수신하는 것입니다. 이 오류는 요청이 제대로 인증되지 않았음을 나타냅니다.
HTTP 401: The MAC signature found in the HTTP request isn't the same as the computed signature.
이전 SDK(소프트웨어 개발 키트)의 경우 예외가 올바른 401 권한 없는 예외 대신 잘못된 JSON 예외로 나타날 수 있습니다. 최신 SDK는 이 시나리오를 처리하고 유효한 오류 메시지를 표시합니다.
원인
이 오류는 요청의 MAC(인증 서명)이 Azure Cosmos DB에서 예상하는 것과 일치하지 않을 때 발생합니다. 일반적인 이유는 잘못된 키 사용, 불완전한 키 회전 또는 읽기 전용 키를 사용하여 쓰기 작업을 수행하는 것입니다. 이 불일치로 인해 Cosmos DB가 ID를 확인하지 못하여 HTTP 401 무단 오류가 발생합니다.
해결 방법: 키 회전이 완료되기를 기다립니다.
계정 키를 회전한 직후 401 MAC 서명 오류가 발생하는 경우 이 솔루션을 적용합니다. Azure Cosmos DB의 키 회전은 계정 크기에 따라 몇 초에서 며칠까지 걸릴 수 있습니다.
인증에 새 키를 사용하기 전에 키 회전 프로세스가 완전히 완료될 때까지 애플리케이션이 대기하는지 확인합니다. 회전이 완료되면 오류가 자동으로 해결됩니다.
해결 방법: 잘못 구성된 키 수정
특정 키를 사용하는 모든 요청에 대해 401 MAC 서명 오류를 일관되게 수신하는 경우 이 솔루션을 사용합니다. 이 시나리오는 일반적으로 애플리케이션 구성에서 키가 잘못되거나 불완전하다는 것을 의미합니다.
애플리케이션의 키가 올바른 계정 키와 일치하는지 확인하고 전체 키가 잘림 없이 복사되었는지 확인합니다.
해결 방법: 쓰기 작업에 읽기/쓰기 키 사용
읽기 요청이 성공하는 동안 401 MAC 서명 오류가 쓰기 작업 중에만 발생하는 경우 이 솔루션을 적용합니다. 이 시나리오는 애플리케이션이 쓰기 작업에 읽기 전용 키를 사용하고 있음을 나타냅니다.
모든 쓰기 작업에 대한 쓰기 액세스 권한이 있는 읽기/쓰기 키 또는 권한 부여 메커니즘을 사용하도록 애플리케이션을 업데이트합니다.
해결 방법: 컨테이너 만들기가 완료되기를 기다립니다.
컨테이너를 만든 직후에 401 MAC 서명 오류가 나타나는 경우, 특히 컨테이너를 삭제하고 같은 이름으로 다시 만들 때 이 솔루션을 선택합니다.
컨테이너에 액세스하거나 작업을 수행하기 전에 컨테이너 만들기 프로세스가 완전히 완료될 때까지 애플리케이션이 대기하는지 확인합니다.
관련 콘텐츠
- Azure Cosmos DB .NET SDK를 사용하고 있는 경우 문제를 진단 및 해결합니다.
- .NET v3 및 .NET v2의 성능 지침에 대해 알아봅니다.
- Azure Cosmos DB Java v4 SDK를 사용할 때 발생하는 문제를 진단하고 해결합니다.
- Java v4 SDK의 성능 지침에 대해 알아봅니다.