Lambda Authorizer
코드는 깃허브 저장소에서 확인할 수 있습니다.
Lambda 권한 부여자(이전 사용자 지정 권한 부여자)는 Lambda 함수를 사용하여 API 메서드에 대한 액세스를 제어하는 API Gateway 기능입니다.
Lambda 권한 부여자는 두 가지 유형이 있습니다.
토큰 기반 Lambda 권한 부여자(TOKEN 권한 부여자라고도 함)는 보유자 토큰(JSON Web Token(JWT) 또는 OAuth 토큰)에 있는 호출자의 자격 증명을 받습니다. 예제 애플리케이션은 GitHub의 Open Banking Brazil - Authorization Samples를 참조하십시오.
요청 파라미터 기반 Lambda 권한 부여자(REQUEST 권한 부여자라고도 함)는 헤더, 쿼리 문자열 파라미터, stageVariables 및 $context 변수의 조합으로 호출자의 자격 증명을 수신합니다.
WebSocket API의 경우 요청 파라미터 기반 유형 권한 부여자만 지원됩니다.
서비스하고자 하는 애플리케이션의 JWT를 비롯한 다양한 verify
기능을 API-Gateway에서 처리함으로서 인증 서버에서 처리함으로서 매번 요청에 대해 서버가 인증을 거치지 않아 최소한의 비용으로 인증 기능을 이용할 수 있습니다.
verify
역할을 담당하는 Lambda 함수를 생성합니다.
이 블로그에서는 Javascript
를 이용하여 함수를 생성합니다.
jwt verify에 필요한 jsonwebtoken
의존성 모듈을 배포하기 위해 serverless framework
을 사용하여 로컬의 lambda 함수를 aws 서비스로 배포합니다.
event.headers.authorization
의 값을 type과 token으로 분류하여 저장합니다. API가 메서드 요청을 받을 때 API Gateway가 소스 토큰을 이 Lambda 권한 부여자 함수의 event.headers.authorization
속성에 전달합니다. Lambda 권한 부여자 함수는 토큰을 읽고 다음과 같이 동작합니다.
'allow'
인 경우 권한 부여자 함수는 200 OK
HTTP 응답 및 다음과 같은 IAM 정책을 반환하고 메서드 요청이 성공합니다.
{
"Version": "2012-10-17",
"Statement": [{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/"
}
]
}
'deny'
인 경우 권한 부여자 함수는 403 Forbidden
HTTP 응답 및 다음과 같은 Deny
IAM 정책을 반환하고 메서드 요청이 실패합니다.
{
"Version": "2012-10-17",
"Statement": [{
"Action": "execute-api:Invoke",
"Effect": "Deny",
"Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/"
}
]
}
'unauthorized'
이나 빈 문자열인 경우 권한 부여자 함수는 401 Unauthorized
HTTP 응답을 반환하고 메서드 호출이 실패합니다.500 Invalid token
응답을 수신하고, 메서드 호출은 실패합니다.