이 페이지는 Apigee 및 Apigee 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"
$TOKEN
를 OAuth 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