본문 바로가기
AWS/Network

Lambda@Edge로 Basic HTTP 인증하기

by sa-na 2022. 6. 25.

들어가며

안녕하세요. Amazon CloudFront와 AWS Lambda@Edge를 사용하여 간단하게 Basic HTTP Authentication을 하는 방법을 소개합니다.

Lambda@Edge 생성

Source: https://gist.github.com/lmakarov/e5984ec16a76548ff2b278c06027f1a4

위의 링크에서 Lambda 코드를 복사하여, 아래와 같이 신규 Lambda를 버지니아 북부 리전에 생성합니다.

 

위의 코드에는 authUser와 authPass가 HardCoding 되어있지만, 이부분은 수정이 가능합니다.

 

Best Practice는 Secrets Manager를 사용하는 것입니다.

https://aws.amazon.com/ko/blogs/networking-and-content-delivery/securing-and-accessing-secrets-from-lambdaedge-using-aws-secrets-manager/

Basic Auth의 목적은 어차피 간단한 인증이기에 이부분은 패스하고 넘어가도록 하겠습니다.

 

Lambda의 Role의 Trusted Entity를 다음과 같이 수정합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "lambda.amazonaws.com",
                    "edgelambda.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

 

CloudFront Trigger를 연결합니다.

 

다음과 같은 Lambda Edge를 배포합니다.

CloudFront에서도 잘 보이는지 확인합니다.

동작 확인

도메인으로 이동해 잘 동작하는지 확인합니다.

인증되지 않은 사용자의 경우 다음과 같이 Unauthorized로 표시되는 것을 확인할 수 있습니다.

정상적인 로그인의 경우 페이지가 잘 표시됩니다!

궁금하신 점이 있으시면 댓글 남겨주세요!

 

감사합니다.

'AWS > Network' 카테고리의 다른 글

Amazon CloudFront와 AWS Global Accelerator의 차이점  (0) 2022.08.07

댓글