본문 바로가기
AWS

AWS lambda cognito 키 획득

by giem 2023. 2. 22.
반응형

AWS에서 사용자 인증을 위해 cognito를 많이 쓴다.

 

이 cognito의 사용자 풀에서 id, password를 통해 인증을 받는 코드를 작성해 봤다.

 

이를 위해서 람다에 cognito access를 위한 권한을 줘야 한다.

 

AmazonESCognitoAccess

 

실행 역할에 이 권한을 추가해 줬다.

 

그럼 python 코드를 보겠다.

라이브러리는 boto3을 사용했다.

 

import boto3
import json

region = 'ap-northeast-2'
user_pool_id = 'ap-northeast-2xxxxxxxxxxxx' #사용자 풀 아이디 입력
app_client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxx'	#앱 클라이언트 아이디 입력

def lambda_handler(event, context):
    username = event['id']
    password = event['password']
    

    # Get ID Token
    idp_client = boto3.client('cognito-idp')
    try:
        resp = idp_client.admin_initiate_auth(UserPoolId=user_pool_id,
                                              ClientId=app_client_id,
                                              AuthFlow='ADMIN_USER_PASSWORD_AUTH',
                                              AuthParameters={'USERNAME': username,'PASSWORD': password})
    
        provider = 'cognito-idp.%s.amazonaws.com/%s' % (region, user_pool_id)
        token = resp['AuthenticationResult']['IdToken']
        return { "status" : "success", "token" : token }
    except idp_client.exceptions.NotAuthorizedException as e:
        return { "status" : "fail", "reason" : "Authentication Failed"}

 

람다에서 작성한 코드는 위와 같다.

테스트를 위해 token을 보여주는 response를 썼다.

 

테스트 요청은 아래와 같이 작성했다.

 

{
  "id": "아이디",
  "password": "비밀번호"
}

여기서 id는 유저네임이나 이메일 어떤 거든 괜찮다.

 

이제 인증을 통해 토큰을 받은 후 그 토큰으로 어딘가에 액세스 할 수 있도록 구축을 할 것이다.

반응형

댓글