Apigee Edge 문서를 보고 있습니다.
Apigee X 문서로 이동하세요. info
학습할 내용
이 튜토리얼에서는 다음 방법을 학습합니다.
- API 키를 요구하는 API 프록시 만들기
- API 제품을 추가합니다.
- 개발자를 추가하고 앱 등록하기
- API 키로 API 호출하기
무단 액세스로부터 API를 보호하는 것은 중요합니다. 이를 위한 한 가지 방법은 API 키 (공개 키, 고객 키 또는 앱 키라고도 함)를 사용하는 것입니다.
앱이 API에 요청을 수행할 때 앱은 유효한 키를 제공해야 합니다. 런타임 시 API 키 검증 정책은 제공된 API 키에서 다음을 확인합니다.
- 유효한가
- 취소되지 않았는가
- 요청한 리소스를 노출하는 API 제품의 API 키와 일치하는가
이 키가 유효하면 요청이 허용됩니다. 키가 유효하지 않으면 요청이 승인되지 않습니다.
이 튜토리얼에서는 액세스를 위해 유효한 API 키를 요구하는 API 프록시를 만듭니다.
필요한 항목
- Apigee Edge 계정. 아직 계정이 없는 경우 Apigee Edge 계정 만들기의 안내에 따라 가입할 수 있습니다.
- API를 호출하는 웹브라우저.
- (추가 크레딧 섹션의 경우, 필수 아님) 명령줄에서 API를 호출할 수 있도록 컴퓨터에 cURL 설치
API 프록시 만들기
- https://apigee.com/edge로 이동하여 로그인합니다.
측면 탐색 메뉴 상단의 사용자 이름을 클릭하여 사용자 프로필 메뉴를 표시한 다음 목록에서 조직을 선택하여 원하는 조직으로 전환합니다.
-
방문 페이지에서 API 프록시를 클릭하여 API 프록시 목록을 표시합니다.
- + Proxy를 클릭합니다.

- 프록시 만들기 페이지에서 리버스 프록시 (가장 일반적)를 선택합니다.
- 프록시 세부정보 페이지에서 다음과 같이 프록시를 구성합니다.
필드 작업 Proxy Name helloworld_apikey입력Project Base Path /helloapikey로 변경Project Base Path는 API 프록시에 요청을 보내는 데 사용되는 URL의 일부입니다.
참고: API 버전 관리에 대한 Apigee의 권장사항은 웹 API 설계: 잃어버린 고리 eBook의 버전 관리를 참고하세요.
Existing API http://mocktarget.apigee.net입력이는 Apigee Edge가 API 프록시에 대한 요청에서 호출하는 대상 URL을 정의합니다.
설명 hello world protected by API key입력 - 다음을 클릭합니다.
- 일반 정책 페이지의 보안: 승인에서 API 키를 선택한 다음 다음을 클릭합니다. 이렇게 하면 API 프록시에 정책 두 개가 추가됩니다.
- 가상 호스트 페이지에서 기본 및 보안을 선택한 후 다음을 클릭합니다. 기본값을 선택하면
http://로 API를 호출할 수 있습니다. 보안을 선택하면https://로 API를 호출할 수 있습니다. - 요약 페이지에서 test 배포 환경이 선택되어 있는지 확인한 후 만들기 및 배포를 클릭합니다.
- 새 API 프록시 및 API 제품이 성공적으로 생성되었고 API 프록시가 테스트 환경에 배포되었다는 확인 메시지가 표시됩니다.
- 프록시 수정을 클릭하여 API 프록시의 개요 페이지를 표시합니다.
정책 보기
- API 프록시 편집기에서 Develop 탭을 클릭합니다. API 프록시의 요청 흐름에 2개의 정책이 추가된 것을 볼 수 있습니다.
- API 키 확인: API 호출을 확인하여 유효한 API 키 (쿼리 매개변수로 전송됨)가 있는지 확인합니다.
- 쿼리 매개변수 API 키 삭제: 확인 후 API 키를 삭제하여 불필요하게 전달 및 노출되지 않도록 하는 AssignMessage 정책입니다.
-
흐름 뷰에서 API 키 정책 아이콘 확인을 클릭하고 하단 코드 보기에서 정책의 XML 구성을 확인합니다.
<APIKey>요소는 호출 시 API 키를 찾아야 할 위치를 정책에 알려줍니다. 기본적으로 HTTP 요청의apikey라는 쿼리 매개변수로 키를 찾습니다.<APIKey ref="request.queryparam.apikey" />
apikey이름은 임의적이며 API 키가 포함된 모든 속성일 수 있습니다.
API 호출 시도
이 단계에서는 대상 서비스에 직접 API를 성공적으로 호출한 다음, API 프록시를 성공적으로 호출하지 않고 정책에 의해 보호되는 방식을 확인합니다.
-
성공
웹브라우저에서 다음 주소로 이동합니다. 요청을 전달하기 위해 API 프록시가 구성되어 있는 대상 서비스이지만, 지금은 직접 처리하도록 합니다.
http://mocktarget.apigee.net
Hello, Guest!라는 성공적인 응답을 받게 됩니다. -
실패
이제 다음 API 프록시를 호출해 봅니다.
http://ORG_NAME-test.apigee.net/helloapikey
ORG_NAME을 Edge 조직 이름으로 바꿉니다.API 키 정책 확인이 없으면 이 호출은 이전 호출과 동일한 응답을 제공합니다. 하지만 이 경우 다음과 같은 오류 응답이 표시됩니다.
{"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
이 응답은 유효한 API 키를 쿼리 매개변수로 전달하지 않았음을 정확히 의미합니다.
다음 단계에서는 API 제품을 추가합니다.
API 제품 추가
Apigee UI를 사용하여 API 제품을 추가하려면 다음 안내를 따르세요.
- 게시 > API 제품을 선택합니다.
- +API 제품을 클릭합니다.
API 제품의 제품 세부정보를 입력합니다.
필드 설명 이름 API 제품의 내부 이름입니다. 이름에 특수문자를 지정하지 마세요.
참고: API 제품이 생성된 후에는 이름을 수정할 수 없습니다. 예를 들면helloworld_apikey-Product입니다.표시 이름 API 제품의 표시 이름입니다. 표시 이름은 UI에서 사용되며 언제든지 수정할 수 있습니다. 지정되지 않으면 이름 값이 사용됩니다. 이 필드는 이름 값을 사용하여 자동으로 채워지며 해당 콘텐츠를 수정하거나 삭제할 수 있습니다. 표시 이름에는 특수문자가 포함될 수 있습니다. 예를 들면 helloworld_apikey-Product입니다.설명 API 제품에 대한 설명입니다. 예를 들면 Test product for tutorial입니다.환경 API 제품이 액세스를 허용할 환경입니다. 예를 들면 test또는prod입니다.액세스 공개를 선택합니다. 액세스 요청 자동 승인 모든 앱에서 이 API 제품의 주요 요청을 자동으로 승인합니다. 할당량 이 튜토리얼에서는 무시합니다. 허용된 OAuth 범위 이 튜토리얼에서는 무시합니다. - API 리소스 섹션에서 방금 만든 API 프록시를 선택합니다. 예를 들면
helloworld_apikey입니다. - 추가를 클릭합니다.
- 경로 섹션에서 경로 '/'를 추가합니다.
- 추가를 클릭합니다.
- 저장을 클릭합니다.
다음 단계에서는 필요한 API 키를 가져옵니다.
조직에 개발자와 앱 추가
이제 API를 사용하도록 개발자 가입 워크플로를 시뮬레이션합니다. 개발자는 API를 호출하는 앱을 하나 이상 가지며 각 앱에는 고유한 API 키가 생성됩니다. 이를 통해 API 제공업체는 API에 대한 액세스를 더 세밀하게 제어하고 앱별 API 트래픽을 더 상세하게 보고할 수 있습니다.
개발자 만들기
개발자를 만들려면 다음 절차를 따르세요.
- 메뉴에서 Publish > Developers를 선택합니다.
- + Developer를 클릭합니다.
New Developer 창에 다음을 입력합니다.
필드 Enter 이름 Keyser성 Soze사용자 이름 keyser이메일 keyser@example.com- 만들기를 클릭합니다.
앱 등록
개발자 앱을 등록하려면 다음 절차를 따르세요.
- Publish > Apps를 선택합니다.
- + App을 클릭합니다.
새 앱 창에 다음을 입력합니다.
p필드 작업 Name 및 Display Name keyser_app입력Company / Developer Developer선택Developer Keyser Soze (keyser@example.com)선택Callback URL 및 Notes 비워 두기 - 사용자 인증 정보 섹션의 만료 메뉴에서 만료 없음을 선택합니다. 이 앱의 사용자 인증 정보는 만료되지 않습니다.
- Products에서 Add product를 클릭합니다.
- helloworld_apikey-Product를 선택합니다.
- 추가를 클릭합니다.
- 위에서 App Details 섹션 오른쪽에 있는 Create를 클릭하면 작업이 저장됩니다.
API 키 가져오기
API 키를 가져오려면 다음 절차를 따르세요.
- 앱 페이지 (게시 > 앱)에서 keyser_app을 클릭합니다.
keyser_app 페이지의 사용자 인증 정보 섹션에서 키 옆에 있는 표시를 클릭합니다. 제품 섹션에서 키가 helloworld_apikey와 연결되어 있습니다.
.
- 키를 선택하고 복사합니다. 다음 단계에서 이를 사용합니다.
키로 API 호출
이제 API 키가 있으므로 이를 사용하여 API 프록시를 호출할 수 있습니다. 웹브라우저에 다음을 입력합니다. 아래에서 ORG_NAME는 Edge 조직 이름으로, API_KEY는 API 키로 대체합니다. 쿼리 매개변수에 불필요한 공백이 없는지 확인합니다.
http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY
이제 API 프록시를 호출하면 다음 응답이 표시됩니다.
Hello, Guest!
수고하셨습니다 API 프록시를 만들었으며, 호출 시에 유효한 API 키가 포함되도록 요구하는 보호 장치를 추가했습니다.
참고로, 일반적으로 API 키를 쿼리 매개변수로 전달하는 것은 좋지 않습니다. 대신 HTTP 헤더로 전달하는 것이 좋습니다.
권장사항: HTTP 헤더로 키 전달
이 단계에서는 x-apikey라는 헤더에서 API 키를 찾도록 프록시를 수정해 봅시다.
- API 프록시를 수정하세요. 개발 > API 프록시 > helloworld_apikey를 선택하고 개발 뷰로 이동합니다.
-
API 키 확인 정책을 선택하고 정책 XML을 수정하여 정책이
queryparam이 아닌header에서 찾도록 지정합니다.<APIKey ref="request.header.x-apikey"/>
- API 프록시를 저장하여 변경사항을 배포합니다.
-
cURL을 사용하여 다음 API 호출을 수행하여 API 키를
x-apikey라는 헤더로 전달합니다. 조직 이름을 반드시 바꿔야 한다는 것을 잊지 마십시오.curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
변경을 완전히 완료하려면 쿼리 매개변수 대신 헤더를 삭제하도록 AssignMessage 정책도 구성해야 합니다. 예를 들면 다음과 같습니다.
<Remove>
<Headers>
<Header name="x-apikey"/>
</Headers>
</Remove>
관련 주제
다음은 이 튜토리얼과 직접 관련이 있는 몇 가지 주제입니다.
API 키를 사용하여 API를 더욱 심층적으로 보호하는 것은 이야기의 일부분일 뿐입니다. API 보호에는 OAuth와 같은 추가 보안이 필요한 경우가 종종 있습니다.
OAuth는 액세스 토큰에 대한 사용자 인증 정보 (예: 사용자 이름 및 비밀번호)를 간단히 교환하는 개방형 프로토콜입니다. 액세스 토큰은 길이가 긴 임의 문자열로, 원래의 사용자 인증 정보를 손상시키지 않고 메시지 파이프라인 주위로 심지어 앱 간에 전달할 수 있습니다. 액세스 토큰은 수명이 짧은 경우가 많기 때문에 새로운 토큰은 항상 생성됩니다.