2017-09-25 2 views
1

남용을 방지하기 위해 인증되지 않은 요청에 기본 스로틀 API 키를 추가하고 싶습니다.API 게이트웨이 요청에 헤더를 추가하는 방법

API 게이트웨이에서 어떻게합니까?

편집

는 분명 내가 필요로하는 무엇을, 어떻게 API 게이트웨이의 요청을 변환 할 수 있도록하려면? 이것이 가능한가?

+0

API 키 확인/제한 단계 전에 * 요청을 변환 할 수 있다고 생각하지 않습니다. –

+0

Thanks @ Michael-sqlbot 아직 방법을 찾지 못했지만 가능성이 있다고 생각하지 마십시오 – Jonathan

+0

동일한 리소스에 대한 인증 된 액세스와 인증되지 않은 액세스를 모두 지원하는 API입니까? 하나의 리소스 + 메소드를 독립적으로 제어 할 수 있다고 생각합니다. 당신의 의도에 대한 정보가 조금이라도 없다면, 관심사가 될 수있는 대안이나 대안을 제시하기가 어렵습니다. –

답변

1

Cognito을 사용하면 API 게이트웨이를 인증하는 가장 좋은 방법이라고 할 수 있습니다.

기본 API 키를 원하면 사용자 지정 API 게이트웨이 인증자를 사용할 수 있습니다. 공식 문서를 확인하십시오 here

+0

Cognito는 무엇을 제공합니까? 가입시 사용자를위한 API 키를 생성 할 수 있습니까? 결제 처리 중입니까? 대답을 주셔서 감사합니다. – Jonathan

+0

Amazon Cognito는 사용자를위한 고유 ID를 만들고, ID 공급자로 이러한 ID를 인증하고, 모바일 사용자 데이터를 AWS Cloud에 저장하는 데 사용할 수있는 서비스입니다. 따라서 각 사용자는 신원 확인을받습니다. Cognito 설명서로 질문을 수정했습니다. –

1

API 키를 애플리케이션의 서버 측에 저장해야하며 클라이언트 측에 공개해서는 안됩니다 (API 키는 보안 토큰으로 간주되지 않지만 악의적 인 사용자가 API를 호출하는 데 사용할 수 있습니다).

API를 사용하는 응용 프로그램의 성격에 따라 몇 가지 옵션을 사용할 수 있습니다. 이 프론트 엔드는 S3에서 호스팅 한 페이지 웹 응용 프로그램 인 경우

  • , 당신은 또한을 통해 프론트 엔드를 제공하면서, 헤더의 API 키를 저장하고 API 게이트웨이로 전달 AWS CloudFront를 사용할 수 있습니다 동일한 CloudFront 배포판. 이렇게하면 웹 응용 프로그램과 API 게이트웨이간에 교차 출처의 자원 공유 문제가 제거됩니다.
  • 웹 서버가있는 경우 웹 서버에 API 키를 저장하고 API 키 헤더 값을 설정하는 동안 API 게이트웨이에 프록시 요청을 사용할 수 있습니다.

참고 : 권장되지 않는 인증에 API 키를 사용하지 마십시오.

+0

API가 웹 서버 또는 호스팅 된 웹 페이지가 아닌 API 게이트웨이를 통해 노출되었습니다. – Jonathan

+0

API를 어떻게 사용합니까? 웹 클라이언트 또는 웹 서버에서? – Ashan

+0

그러나 클라이언트가 액세스를 결정할 경우에 따라 달라집니다. API를 제공 할 때만 사용합니다. – Jonathan

1

이렇게하면 해결할 수 있습니다.

사용 계획 허용 요청의 스로틀, 버스트 및 최대 제한을 사용하십시오.

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createUsagePlan-property

API 키 :

만들기 API 키 (createApiKey)(createUsagePlanKey) 이미 정의 사용 계획과를 연결합니다. 그러면 수신 된 요청에 대해 정의 된 한도가 허용됩니다.

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createUsagePlanKey-property

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createApiKey-property

는이 만료되면 사용하지 않은 키를 사용하여 API 게이트웨이 홍수하지 ​​않도록, 생성 된 API-키를 모니터링하고 정리하기 위해 별도의 람다 되세요.

CloudFront로 가져 가면 지정된 기간 동안 유효하게 자체 서명 된 URL을 만들 수 있습니다. 그 시간 제한 URL은 유효하지 않습니다. 이것은 사용자에 대한 시간 제한을 유지하기위한 것이므로 주어진 시간 내에 액세스 할 수있는 리소스입니다.

하나 더 많은 usecase, 우리는 작업, 사용자 정의 Authorizer 특정 URL에서만 사용자를 인증 할 수 있습니다. 호출을받는 다른 URL은 추가 코드없이 권한이없는 사용자에게 반환됩니다.

희망이 있습니다.

+0

이것은 OP의 특정 요구 사항을 해결할 때 좋은 대답입니다. – dashmug

관련 문제