반응형
AWS에서 사용자 인증을 위해 cognito를 많이 쓴다.
이 cognito의 사용자 풀에서 id, password를 통해 인증을 받는 코드를 작성해 봤다.
이를 위해서 람다에 cognito access를 위한 권한을 줘야 한다.
실행 역할에 이 권한을 추가해 줬다.
그럼 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는 유저네임이나 이메일 어떤 거든 괜찮다.
이제 인증을 통해 토큰을 받은 후 그 토큰으로 어딘가에 액세스 할 수 있도록 구축을 할 것이다.
반응형
'AWS' 카테고리의 다른 글
AWS ECS 파이썬 도커 이미지 배포 기록 (0) | 2023.07.10 |
---|---|
AWS Timestream 알아보기 - Architecture편 (3) | 2023.05.10 |
AWS API Gateway Cognito 권한부여자 연결 (0) | 2023.02.23 |
AWS EC2 nvm, node.js 설치 (0) | 2023.02.22 |
댓글