API 키 검증 설정

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

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

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

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

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

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

이 정책 유형에 대한 자세한 내용은 정책 참조 주제인 Verify API Key 정책을 참조하세요.

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://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

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

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

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

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

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

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

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

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

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

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

검색결과:

OAuth Failure : Consumer Key is Invalid

조직의 관리자는 조직에 등록된 모든 앱의 고객 키를 검색할 수 있습니다.

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password