API 키 검증 설정

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

API에 대한 API 키 검증은 Verify API Key 유형의 정책을 연결하여 설정할 수 있습니다. VerifyAPIKey 정책에 필요한 유일한 설정은 클라이언트 요청의 API 키 예상 위치입니다. API 프록시가 지정된 위치를 확인하고 API 키를 추출합니다. API 키가 예상 위치에 없는 경우 오류가 발생하고 요청이 거부됩니다. API 키는 쿼리 매개변수, 양식 매개변수 또는 HTTP 헤더에 위치할 수 있습니다.

예를 들어 아래 정책 구성은 예상되는 키 위치를 apikey라는 쿼리 매개변수로 정의합니다. 요청이 성공하면 API 키를 요청에 추가된 쿼리 매개변수로 제공해야 합니다(예: ?apikey=Y7yeiuhcbKJHD790).

API 키를 확인하려면 다음 정책을 만듭니다.

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

이 정책은 보호가 필요한 모든 API에 연결할 수 있습니다.

이 정책 유형에 대한 종합적인 문서는 정책 참조 주제인 VerifyAPIKey 정책을 참조하세요.

API 프록시는 요청에 있는 모든 HTTP 헤더 및 쿼리 매개변수를 자동으로 전달합니다. 따라서 API 키가 확인되면 API 키가 백엔드 서비스로 전송되지 않도록 메시지에서 제거하는 것이 좋습니다. 이를 위해서는 다음과 같이 AssignMessage 유형의 정책을 사용하면 됩니다.

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

정책 연결

정책은 처리 단계로서 API 프록시 흐름에 연결해야 합니다. 요청 PreFlow에 정책을 적용하면 API 프록시가 클라이언트 앱으로부터 수신하는 모든 요청에 대해 API 키가 확인됩니다. 확인된 후에는 API 키가 아웃바운드 요청에서 제거됩니다.

다음과 같이 보호할 API 프록시의 ProxyEndpoint에 정책을 연결합니다.

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

정책을 연결한 후 API 프록시를 배포합니다.

유효한 API 키로 요청 제출

조직의 관리자는 다음과 같이 모든 앱의 API 키를 검색할 수 있습니다.

curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

이 호출에 대해 반환되는 앱 프로필은 소비자 키(API 키)와 보안 비밀을 제공합니다. 소비자 키 값은 보호된 API에 대한 요청에서 API 키에 사용하는 값입니다.

예를 들어 API 키를 포함하지 않은 요청은 승인에 실패합니다.

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282

실패 메시지는 정책이 API 키를 확인했지만 유효한 키를 찾지 못했음을 나타냅니다.

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

앱의 소비자 키가 쿼리 매개변수로 포함될 때의 예상 결과는 성공적인 승인입니다.

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

예상 결과는 날씨 서비스의 성공적인 응답입니다.

요청에서 API 키 값을 수정하면 승인에 실패합니다.

curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

결과:

OAuth Failure : Consumer Key is Invalid