[go] Go 언어를 사용하여 AWS API Gateway를 통한 사용자 인증 구현하기

AWS API Gateway는 클라이언트 애플리케이션과 백엔드 서비스 사이에서 보안 및 권한 부여를 위해 사용자를 인증하는 기능을 제공합니다. 이 기능은 사용자가 API Gateway를 통해 보낸 요청을 처리하기 전에 사용자의 인증 상태를 확인하고 요청을 승인 또는 거부할 수 있습니다.

AWS API Gateway를 사용하여 사용자 인증을 구현하는 방법을 살펴보겠습니다.

1. IAM 사용자 및 역할 생성

먼저, AWS IAM (Identity and Access Management)을 사용하여 API Gateway에 필요한 사용자 및 역할을 생성합니다. 이를 통해 API Gateway가 다른 AWS 서비스에 대한 호출을 수행하고 인증을 처리할 수 있는 권한을 얻을 수 있습니다.

aws iam create-user --user-name apigateway-user
aws iam create-role --role-name apigateway-role --assume-role-policy-document file://trust-policy.json

2. 사용자 인증 설정

다음으로, API Gateway 콘솔을 사용하여 생성한 API에 대한 사용자 인증을 설정합니다. 이를 통해 API Gateway가 클라이언트 요청에서 사용자를 인증하고 권한을 부여할 수 있습니다.

  1. API Gateway 콘솔에 로그인합니다.
  2. 인증을 적용할 API를 선택합니다.
  3. 리소스를 선택한 다음 “메서드 요청”을 클릭합니다.
  4. “인증” 섹션에서 사용자 인증을 구성합니다.

3. Lambda 함수 연동

API Gateway의 인증된 요청을 처리하기 위해 AWS Lambda 함수를 이용할 수 있습니다. Lambda 함수를 사용하여 인가 점검, 사용자 인증 및 요청 라우팅을 수행합니다.

package main

import (
	"context"
	"fmt"

	"github.com/aws/aws-lambda-go/events"
	"github.com/aws/aws-lambda-go/lambda"
)

func handler(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
	// 사용자 인증 및 권한 점검 로직을 구현합니다
	fmt.Printf("Received request %s %s %s\n", request.HTTPMethod, request.Path, request.QueryStringParameters["key"])
	// 권한이 부여된 경우
	return events.APIGatewayProxyResponse{
		StatusCode: 200,
		Body:       "Authorized",
	}, nil
	// 권한이 없는 경우
	return events.APIGatewayProxyResponse{
		StatusCode: 403,
		Body:       "Unauthorized",
	}, nil
}

func main() {
	lambda.Start(handler)
}

4. 사용자 권한 관리

API Gateway는 사용자의 역할 및 권한을 관리하고 설정할 수 있는 기능을 제공합니다. 이를 통해 다양한 사용자 그룹에 대한 권한을 지정하고 사용자의 인증 상태를 확인할 수 있습니다.

마치며

이제, AWS API Gateway를 통해 사용자를 인증하고 권한을 부여하는 프로세스를 구현하는 방법을 살펴보았습니다. 이를 통해 클라이언트 애플리케이션과 백엔드 서비스 사이에서 안전하고 보안된 통신을 구축할 수 있습니다. AWS의 다양한 보안 및 인증 기능을 활용하여 안전한 애플리케이션을 구축하는 데 도움이 될 것입니다.

참고 자료: