API 키를 요구하여 API 보안

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

학습할 내용

이 가이드에서는 다음 방법을 배웁니다.

  • API 키를 요구하는 API 프록시 만들기
  • API 제품을 추가합니다.
  • 개발자를 추가하고 앱 등록하기
  • API 키로 API 호출하기

무단 액세스로부터 API를 보호하는 것은 중요합니다. 한 가지 방법은 API 키 (공개 키라고도 하며, 소비자 키 또는 앱 키).

앱에서 API를 사용하려면 앱에서 유효한 키를 제공해야 합니다. 런타임 시 API 키 인증 정책 제공된 API 키가 다음 조건을 충족하는지 확인합니다.

  • 유효한가
  • 취소되지 않았는가
  • 요청된 리소스

이 키가 유효하면 요청이 허용됩니다. 키가 유효하지 않은 경우 승인 실패가 발생할 수 있습니다.

이 튜토리얼에서는 유효한 API가 필요한 API 프록시를 만듭니다. 키를 눌러 액세스합니다.

필요한 항목

  • Apigee Edge 계정 아직 계정이 없는 경우 가입할 수 있습니다. 다음 페이지의 안내를 따르세요. <ph type="x-smartling-placeholder"></ph> Apigee Edge 계정 만들기를 참조하세요.
  • API를 호출하는 웹브라우저.
  • (추가 크레딧 섹션의 경우, 필수사항이 아님) cURL이 명령줄에서 API를 호출할 수 있습니다.

API 프록시 만들기

'mocktarget' 정보

mocktarget 서비스는 Apigee에서 호스팅되며 간단한 결과를 반환합니다. 데이터를 수집하는 데 사용됩니다 API 키 또는 액세스 토큰이 필요하지 않습니다. 실제로 사용자는 웹 브라우저에서 볼 수 있습니다. 다음을 클릭하여 사용해 보세요.

http://mocktarget.apigee.net

타겟이 Hello, Guest!를 반환합니다. 사용 /help 리소스를 통해 사용 가능한 다른 API 리소스의 도움말 페이지를 볼 수 있습니다.

  1. <ph type="x-smartling-placeholder"></ph>(으)로 이동 https://apigee.com/edge를 다운로드하고 로그인합니다.
  2. 원하는 조직으로 전환하려면 측면 탐색 메뉴 상단에서 사용자 프로필 메뉴를 표시한 다음 목록에서 조직을 선택합니다

    사용자 프로필 메뉴에서 조직 선택
  3. 방문 페이지에서 API 프록시를 클릭하여 API를 표시합니다. 프록시 목록입니다.

    Edge API 메뉴
  4. + Proxy를 클릭합니다.
    프록시 만들기 버튼
  5. 프록시 만들기 페이지에서 역방향 프록시 (가장 일반적)를 선택합니다.
  6. 프록시 세부정보 페이지에서 다음과 같이 프록시를 구성합니다.
    필드 작업
    Proxy Name helloworld_apikey 입력
    Project Base Path

    /helloapikey로 변경

    프로젝트 기본 경로는 API 프록시에 요청합니다

    참고: API 버전 관리에 대한 Apigee의 권장사항 <ph type="x-smartling-placeholder"></ph> 보기 Web API Design: The Missing 버전 관리 eBook을 링크합니다.

    Existing API

    http://mocktarget.apigee.net 입력

    이는 Apigee Edge가 API 프록시에 요청합니다.

    설명 hello world protected by API key 입력
  7. 다음을 클릭합니다.
  8. 일반 정책 페이지의 보안: 승인을 클릭하고 API 키를 선택한 후 다음을 클릭합니다. 이 API 프록시에 두 개의 정책이 추가됩니다.
  9. Virtual Hosts(가상 호스트) 페이지에서 default(기본값)를 선택하고 secure를 선택하고 다음을 클릭합니다. 기본값을 선택하면 http://로 API를 호출합니다. secure를 선택하면 를 사용하면 https://로 API를 호출할 수 있습니다.
  10. 요약 페이지에서 테스트 배포를 확인합니다. 환경을 선택한 다음 만들기 및 배포를 클릭합니다.
  11. 새 API 프록시 및 API가 생성되었으며 API 프록시가 맞춤설정할 수 있습니다
  12. 프록시 수정을 클릭하여 다음에 대한 개요 페이지를 표시합니다. API 프록시

정책 보기

  1. API 프록시 편집기에서 Develop 탭을 클릭합니다. 보시다시피 API 프록시의 요청 흐름에 두 개의 정책이 추가되었습니다. <ph type="x-smartling-placeholder">
      </ph>
    • API 키 인증: API 호출이 올바른 키인지 API 키가 있습니다 (쿼리 매개변수로 전송됨).
    • Remove Query Param apikey: 할당 메시지 정책 통과되지 않도록 확인 후 API 키 삭제 불필요하게 노출되는 것을 방지합니다.
  2. 흐름 뷰에서 API 키 정책 확인 아이콘을 클릭하고 정책의 XML 구성을 업데이트합니다. 이 <APIKey> 요소는 정책이 적용되어야 할 위치를 알려줍니다. API 키를 찾습니다. 기본적으로 키를 HTTP에서 apikey라는 쿼리 매개변수로 사용 요청:

    <APIKey ref="request.queryparam.apikey" />
    

    apikey 이름은 임의적이며 모든 속성이 될 수 있습니다. API 키를 확인할 수 있습니다

API 호출 시도

이 단계에서는 대상에 직접 성공적인 API 호출을 수행합니다. 서비스를 사용하는 경우 API 프록시를 호출하지 못해 실패가 정책으로 보호되고 있습니다.

  1. 성공

    웹브라우저에서 다음 주소로 이동합니다. API 프록시가 전달하도록 구성된 대상 서비스입니다. 지금은 직접 방문하게 됩니다.

    http://mocktarget.apigee.net
    

    Hello, Guest!라는 성공적인 응답을 받게 됩니다.

  2. 실패

    이제 다음 API 프록시를 호출해 봅니다.

    http://ORG_NAME-test.apigee.net/helloapikey
    

    ORG_NAME을 에지 조직

    API 키 인증 정책이 없으면 이 호출을 통해 응답을 이전 호출로 반환합니다. 하지만 이 경우에는 다음과 같은 오류 응답이 표시됩니다.

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    올바른 API 키( 쿼리 매개변수).

다음 단계에서는 API 제품을 추가합니다.

API 제품 추가

Apigee UI를 사용하여 API 제품을 추가하려면 다음 안내를 따르세요.

  1. 게시 > API 제품을 선택합니다.
  2. +API 제품을 클릭합니다.
  3. API 제품의 제품 세부정보를 입력합니다.

    필드 설명
    이름 API 제품의 내부 이름입니다. 금지사항 이름에 특수문자를 지정해야 합니다
    참고: API 제품이 생성된 후에는 이름을 수정할 수 없습니다. 대상 예를 들면 helloworld_apikey-Product입니다.
    표시 이름 API 제품의 표시 이름입니다. 표시 이름은 언제든지 수정할 수 있습니다 지정하지 않으면 이름 값이 사용됩니다. 이 필드는 이름 값 콘텐츠를 수정하거나 삭제할 수 있습니다. 디스플레이 이름에는 특수문자를 포함할 수 있습니다 예를 들어 helloworld_apikey-Product
    설명 API 제품에 대한 설명입니다. 예를 들면 Test product for tutorial입니다.
    환경 API 제품이 액세스를 허용할 환경입니다. 예를 들면 test 또는 prod입니다.
    액세스 공개를 선택합니다.
    액세스 요청 자동 승인 이 API에 대한 키 요청의 자동 승인 사용 설정 앱을 홍보할 수 있습니다.
    할당량 이 가이드에서는 무시합니다.
    허용된 OAuth 범위 이 가이드에서는 무시합니다.
  4. API 리소스 섹션에서 방금 전에 사용한 API 프록시를 선택합니다. 생성됨. 예를 들면 helloworld_apikey입니다.
  5. 추가를 클릭합니다.
  6. 경로 섹션에서 '/' 경로를 추가합니다.
  7. 추가를 클릭합니다.
  8. 저장을 클릭합니다.

다음 단계에서는 필요한 API 키를 가져옵니다.

개발자 및 앱을 조직

다음으로, 이 프로그램에 가입하는 개발자가 API를 사용합니다 개발자는 API를 호출하는 하나 이상의 앱을 가지고 있습니다. 각 앱은 고유한 API 키를 받습니다 이를 통해 API 제공업체는 API에 대한 액세스를 세밀하게 제어하고 앱별 API 트래픽입니다.

개발자 만들기

개발자를 만들려면 다음 절차를 따르세요.

  1. 메뉴에서 Publish > Developers를 선택합니다.
  2. + Developer를 클릭합니다.
  3. 새 개발자 창에 다음을 입력합니다.

    필드 입력
    First Name(이름) Keyser
    Soze
    사용자 이름 keyser
    Email keyser@example.com
  4. 만들기를 클릭합니다.

앱 등록

개발자 앱을 등록하려면 다음 절차를 따르세요.

  1. Publish > Apps를 선택합니다.
  2. + App을 클릭합니다.
  3. New App 창에 다음을 입력합니다.

    p
    필드 작업
    NameDisplay Name keyser_app 입력
    Company / Developer Developer 선택
    Developer Keyser Soze (keyser@example.com) 선택
    Callback URLNotes 비워 두기
  4. Credentials 섹션의 Never 만료 메뉴 이 앱의 사용자 인증 정보는 만료되지 않습니다.
  5. Products에서 Add product를 클릭합니다.
  6. helloworld_apikey-Product를 선택합니다.
  7. 추가를 클릭합니다.
  8. 위에서 앱 세부정보 오른쪽에 있는 만들기를 클릭합니다. 섹션을 클릭합니다.

API 키 가져오기

API 키를 가져오려면 다음 절차를 따르세요.

  1. 페이지 (게시 > 앱)에서 keyser_app을 사용합니다.
  2. keyser_app 페이지에서 옆에 있는 표시를 클릭합니다. 사용자 인증 정보 섹션에 표시됩니다. 제품 섹션에서 키가 helloworld_apikey와 연결되어 있습니다.

    에서 자세한 내용을 확인하실 수 있습니다.
  3. 를 선택하여 복사합니다. 다음 단계에서 이를 사용합니다.

키로 API 호출

이제 API 키가 있으므로 이를 사용하여 API 프록시를 호출할 수 있습니다. 입력 웹 브라우저에서 다음과 같이 하세요. Edge 조직 이름으로 대체하세요. 아래는 ORG_NAME용, API_KEY용 API 키입니다. 쿼리 매개변수에 불필요한 공백이 없는지 확인합니다.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

이제 API 프록시를 호출하면 다음과 같은 응답이 표시됩니다. Hello, Guest!

축하합니다. API 프록시를 만들고 다음을 통해 보호했습니다. 유효한 API 키를 호출에 포함하도록 요구합니다.

일반적으로 API 키를 쿼리 매개변수를 지정합니다. 고려해야 할 사항 <ph type="x-smartling-placeholder"></ph> 대신 HTTP 헤더에 전달합니다.

권장사항: HTTP 헤더에서 키 전달

이 단계에서는 프록시를 수정하여 x-apikey 헤더입니다.

  1. API 프록시를 수정하세요. 개발 > API 프록시 > helloworld_apikey를 열고 개발 뷰로 이동합니다.
  2. API 키 확인 정책을 선택하고 정책 XML을 수정하여 정책을 header queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. API 프록시를 저장하여 변경사항을 배포합니다.
  4. cURL을 사용하여 다음 API를 호출하여 API 키를 x-apikey 헤더입니다. 반드시 조직 이름.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

변경을 완전히 완료하려면 VerifyMessage 정책을 사용하여 쿼리 매개변수 대신 헤더를 삭제합니다. 예를 들면 다음과 같습니다.

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>
드림 <ph type="x-smartling-placeholder">

관련 주제

다음은 이 가이드와 직접 관련이 있는 몇 가지 주제입니다.

API 키를 사용하여 API를 더욱 심층적으로 보호하는 것은 이야기의 일부분일 뿐입니다. 종종 API 보호에는 OAuth와 같은 추가 보안이 포함됩니다.

OAuth는 간단히 말해서 사용자 이름과 비밀번호 같은 인증 정보를 액세스할 수 있습니다 액세스 토큰은 메시지와 함께 전달할 수 있는 임의의 긴 문자열입니다. 모든 파이프라인에 대한 액세스를 제어할 수 있습니다. 액세스 토큰은 수명이 짧기 때문에 항상 새 토큰이 생성됩니다.