Sending your request WITHOUT id token generated by Cognito.....
Response code: 200 , Response Data: ["My favorite player is Lionel Messi","My favorite player is Cristiano Ronaldo","My favorite player is Son Heung-min"]
사용자는 우리가 생성한 사용자 풀에 로그인하고 자격 증명 또는 액세스 토큰을 얻은 다음 토큰 중 하나로 API 메서드를 호출할 수 있습니다.
이러한 토큰은 일반적으로 요청의 Authorization 헤더로 설정됩니다.
Sign up with Amazon Cognito user pools
이미 배포한 두 번째 CloudFormation 템플릿에는 Amazon Cognito 사용자 풀이 이미 포함되어 있습니다.
Cognito의 앱 클라이언트 암호를 얻는 것부터 시작하겠습니다 . 이 암호는 랩의 후반부에서 ID 토큰을 생성하는 데 사용할 것입니다.
Take note of App client secret. Other required values such as user pool ID and App client ID are available in the Output section of the current cloudformation stack
25
Create Cognito user pools as Authorizer in API Gateway Console
API GW → wa-lab-rds-api 선택 : 리소스 → 메서드 요청 정보 확인 : 권한 부여 NONE
왼쪽 메뉴 ‘권한 부여자’ → ‘권한 부여자 생성’ : 이름(walab-authorizer), 유형(cognito), Cognito 사용자 풀, 토큰 소스(Authorization)
26
리소스 → GET → 메서드 요청 편집 : (새창) 권한 부여(walab-authorizer) → 저장
27
상단 API 배포 → 스테이지(Dev), 설명(WA Lab) ⇒ 배포
28
배포 완료 후 리소스에서 GET 하단에 권한 부여 부분 확인
29
Add Authorization header in CloudFront
설명 : 기본적으로 CloudFront는 엣지 로케이션에서 객체를 캐싱할 때 헤더를 고려하지 않습니다. 이제 API에 액세스하려면 요청에 유효한 ID 토큰이 있는 Authorization 헤더가 있어야 합니다. 따라서 헤더를 API 게이트웨이로 전달하도록 CloudFront를 구성합니다
CloudFront → 동작(편집) : 헤더 추가(다음 헤더 추가 - Authorization 선택) → 변경 사항 저장
30
CloudFront → 무효화 : /*'
31
Cognito 사용자 Sign up : CF output에 CognitoSignupURL 클릭 → 아래 Sign up 클릭 ⇒ 기입한 이메일로 확인
32
Cognito 에 사용자 추가 확인
33
Generate an ID Token and send a request with ID Token
Getting your ID token that will be expired in 60 minutes...
Current time: 16/09/2023 20:20:19
/usr/local/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/
warnings.warn(warning, PythonDeprecationWarning)
ID token: NJ2UqKKtmoTkUCiTnYG3atKIzJv42enQiUasfNvbN0l3Y79MkaRQxAX8xYRICtDxfprVYrnG16jhaUa2HOIHlZQk22QanbzfB7fPmTideu3w'
37
위에서 생성한 ID 토큰으로 요청 보내서 확인 → CloudFront를 통해서 API에 액세스하려면 ID 토큰을 Authorization 헤더로 제공해야 합니다.