구독을 사용하여 API 보호

완료됨

API Management를 통해 API를 게시하면 구독 키를 사용하여 이러한 API에 쉽고 안전하게 액세스할 수 있습니다. 게시된 API를 사용해야 하는 개발자는 이러한 API에 호출 시 HTTP 요청에 유효한 구독 키를 포함해야 합니다. API Management 게이트웨이는 구독 키 없이는 호출을 거부하고, 해당 호출은 백 엔드 서비스로 전달되지 않습니다.

API에 액세스하기 위해 구독 키를 얻으려면 구독이 필요합니다. 구독은 일반적으로 구독 키 쌍의 이름을 지정한 컨테이너입니다. 게시된 API를 사용해야 하는 개발자는 구독을 가져올 수 있습니다. API 게시자에게 승인을 받을 필요는 없습니다. 또한 API 게시자는 API 소비자를 위해 직접 구독을 만들 수도 있습니다.

참고

또한 API Management는 OAuth2.0, 클라이언트 인증서, IP 허용 목록을 포함하여 API에 대한 액세스를 보호하기 위한 다른 메커니즘도 지원합니다.

구독 및 키

구독 키는 클라이언트 요청의 헤더에서 또는 쿼리 문자열 매개 변수로서 전달될 수 있는 고유한 자동 생성 키입니다. 키는 다른 영역으로 범위를 지정할 수 있는 구독과 직접 관련이 있습니다. 구독은 사용 권한 및 정책에 대한 세부적인 제어를 제공합니다.

세 가지 기본 구독 범위는 다음과 같습니다.

범위 세부 정보
모든 API 게이트웨이에서 액세스할 수 있는 모든 API에 적용됩니다.
단일 API 이 범위는 가져온 단일 API와 모든 엔드포인트에 적용됩니다.
제품 제품은 API Management에서 구성한 둘 이상의 API의 컬렉션입니다. API는 둘 이상의 제품에 할당할 수 있습니다. 제품에는 서로 다른 액세스 규칙, 사용 할당량 및 사용 약관이 있을 수 있습니다.

보호된 API를 호출하는 애플리케이션은 모든 요청에 키를 포함해야 합니다.

예를 들어 키가 권한 없는 사용자와 공유되었다고 의심되는 경우 이러한 구독 키는 언제든지 다시 생성할 수 있습니다.

구독 화면을 보여주는 이미지.

모든 구독에는 기본 키와 보조 키라는 두 개의 키가 있습니다. 두 개의 키가 있으면 키를 다시 생성해야 할 때 더 쉽게 생성할 수 있습니다. 예를 들어 기본 키를 변경하고 가동 중지 시간을 방지하려면 앱에서 보조 키를 사용합니다.

구독을 사용하도록 설정된 제품의 경우 클라이언트는 해당 제품에서 API를 호출할 때 키를 제공해야 합니다. 개발자는 구독 요청을 제출하여 키를 얻을 수 있습니다. 요청을 승인하는 경우 구독 키를 암호화된 메시지 등을 통해 안전하게 보내야 합니다. 이 단계는 API Management 워크플로의 핵심 부분입니다.

구독 키를 사용하여 API 호출

구독으로 보호되는 API 엔드포인트를 호출할 때 애플리케이션에서 모든 HTTP 요청에 유효한 키를 포함시켜야 합니다. 키는 요청 헤더에서 전달하거나 또는 URL에서 쿼리 문자열로 전달할 수 있습니다.

기본 헤더 이름은 Ocp-Apim-Subscription-Key이고, 기본 쿼리 문자열은 subscription-key입니다.

API 호출을 테스트하기 위해 개발자 포털 또는 curl과 같은 명령줄 도구를 사용할 수 있습니다. 다음은 구독 키 헤더를 보여 주는 개발자 포털을 사용하는 GET 요청 예입니다.

개발자 포털에서 API 호출

curl을 사용하여 요청 헤더에서 키를 전달하는 방법은 다음과 같습니다.

curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path

URL에서 키를 쿼리 문자열로 전달하는 curl 명령의 예제는 다음과 같습니다.

curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>

키가 헤더에서 전달되지 않거나 URL의 쿼리 문자열로서 전달되지 않는 경우 API 게이트웨이에서 401 액세스 거부 응답을 받게 됩니다.