다음을 통해 공유


API를 호출하는 동안 무단 오류(401)

Azure API Management 문제 해결 시리즈에 대한 문서를 참조하여 랩의 세 번째 시나리오입니다. 이에 따라 랩 설정 지침을 따라 문제를 다시 만들어야 합니다.

원래 제품 버전: API Management 서비스
원래 KB 번호: 4464930

참고 항목

이 문서가 도움이 되었나요? 귀하의 입력은 우리에게 중요합니다. 이 페이지의 피드백 단추를 사용하여 이 문서가 얼마나 잘 작동했는지 또는 어떻게 개선할 수 있는지 알려주세요.

증상

Echo API갑자기 다양한 유형의 HTTP 401 - 권한 없는 오류를 throw하기 시작했습니다. 리소스 만들기 및 리소스 검색 작업에 다음 오류 메시지가 표시됩니다.

{
"statusCode": 401,
"message": "잘못된 구독 키로 인해 액세스가 거부되었습니다. 활성 구독에 유효한 키를 제공해야 합니다."
}

반면 나머지 작업은 표시됩니다.

{
"statusCode": 401,
"message": "구독 키 누락으로 인해 액세스가 거부되었습니다. API에 요청할 때 구독 키를 포함해야 합니다."
}

모든 작업에 대해 예상되는 HTTP 응답 코드는 200이지만 백 엔드 API는 헤더 외에 요청 본문으로 보내는 내용을 항상 에코하므로 응답 본문이 달라집니다.

문제 해결 단계

  • 개발자는 API에 액세스하려면 먼저 제품을 구독해야 합니다. 구독할 때 해당 제품의 모든 API에 적합한 요청 헤더의 일부로 전송되는 구독 키를 가져옵니다. Ocp-Apim-Subscription-Key 는 이 API와 연결된 제품의 구독 키에 대해 전송된 요청 헤더입니다. 키가 자동으로 채워집니다.

  • 잘못된 구독 키로 인해 액세스가 거부된 오류와 관련합니다. 활성 구독에 유효한 키를 제공해야 합니다. 리소스 만들기 및 리소스 검색 작업을 호출하는 동안 Ocp-Apim-Subscription-Key 요청 헤더의 잘못된 값을 보내는 것이 분명합니다.

  • 아래와 같이 로그인 후 프로필 페이지로 이동하여 APIM 개발자 포털에서 특정 제품에 대한 구독 키를 확인할 수 있습니다.

  • 표시 단추를 선택하여 구독한 각 제품의 구독 키를 확인합니다.

    각 제품에 대한 구독 키의 스크린샷.

  • 테스트 탭에서 전송되는 헤더를 확인하면 Ocp-Apim-Subscription-Key 요청 헤더의 값이 잘못된 것을 알 수 있습니다. APIM이 이 요청 헤더를 올바른 구독 키로 자동으로 채우기 때문에 이것이 어떻게 가능한지 궁금할 수 있습니다.

  • 디자인 탭에서 리소스 만들기 및 리소스 검색 작업의 프런트 엔드 정의를 확인해 보겠습니다. 신중하게 검사하면 이러한 작업에 헤더 탭에 추가된 Ocp-Apim-Subscription-Key 요청 헤더의 하드 코딩된 값이 잘못되었습니다.

  • 제거할 수 있습니다. 잘못된 구독 키 문제가 해결되지만 여전히 구독 키 오류가 누락됩니다.

    다음과 같은 오류 메시지가 나타날 수 있습니다.

    HTTP/1.1 401 권한 없음

    콘텐츠 길이: 152
    Content-Type: application/json
    날짜: 2018년 7월 29일 일요일 14:29:50 GMT
    Vary: Origin WWW-Authenticate: AzureApiManagementKey realm=""https://pratyay.azure-api.net/echo,name="Ocp-Apim-Subscription-Key",type="header" {
    "statusCode": 401,
    "message": "구독 키 누락으로 인해 액세스가 거부되었습니다. API를 요청할 때 구독 키를 포함해야 합니다." }

  • Echo APIettings로 이동하여 사용 가능한 제품과 연결되어 있는지 확인합니다. 그렇지 않은 경우 구독 키를 얻을 수 있도록 이 API를 제품과 연결해야 합니다.

    개발자는 API에 액세스하려면 먼저 제품을 구독해야 합니다. 구독할 경우 해당 제품의 모든 API에 적절한 구독 키를 받게 됩니다. APIM 인스턴스를 만든 경우 사용자는 이미 관리자이므로 기본적으로 모든 제품을 구독한 상태가 됩니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.