Tích hợp user pool cognitor vào api gateway – Step by step guide (cross account)

Tích hợp user pool cognitor vào api gateway – Step by step guide (cross account)

Share Everywhere

Table of contents

Yêu cầu

Có 2 tài khoản AWS, vì sẽ cần phải tạo Cognito user pool tại 1 tài khoản, tạo API tại 1 tài khoản khác

Link docs tham khảo: 

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-cross-account-cognito-authorizer.html

Bước 1: Tạo Cognito User Pools

a. Đăng nhập AWS Console, click Services Và chọn Cognito

b. Chọn Manage User Pools

c. Chọn Create a User Pool

d. Đặt tên cho user pool, ví du “WildRydes”, sau đó chọn Review Defaults

e. Tại page review, click Create pool

f. Ghi lại Pool Id và Pool ARN để dùng sau này.

Bước 2: Add App và User pool

Lưu ý từ AWS:

Client secrets aren’t currently supported with the JavaScript SDK. If you do create an app with a generated secret, delete it and create a new one with the correct configuration.

a. Từ page Pool Details, chọn App clients từ navigation bar.

b. Chọn Add an app client.

c. Đặt tên cho app, ví du “WildRydesWebApp”.

d. Bỏ check option Generate client secret option, còn lại để mặc định. Để cho đơn giản trong việc lấy token để test sau này, thì tick chọn Enable token revocation

e. Chọn Create app client.

f. Ghi lại App client id của app vừa tạo để dùng sau này.

Bước 3: Integrate app

a. Chọn App client settings trong navigation bar

b. Chọn Cognito User Pool trong phần Enabled Identity Providers

c. Nhập Callback URL và Signout URL, giả sử: https://example1.com/callback và https://example1.com/signout (Lưu ý: phải là https, có thể đặt call back là url API Gateway, demo nên tùy chọn)ở phần Sign in and sign out URLs

c. Ở phần Allowed OAuth Flows, tick chọn Authorization code grant, Implicit grant, bỏ qua Client credentials

d. Ở phần Allowed OAuth Scopes, có thể chọn hết các tùy chọn

Bước 4: Tạo domain name

a. Chọn Domain name ở navigation bar, ở dưới Amazon Cognito domain, cho 1 cái tên tùy thích, sau đó chọn Check availability, nếu báo là domain available thì OK

b. Chọn Save changes. (Lưu ý: không thích dùng domain provide bởi AWS thì có thể chọn Use your domain, nhưng nếu làm demo thì chọn của AWS cho dễ + đỡ config nhiều)

c. Chọn lại App client settings và chọn Launch Hosted UI

Lưu ý: Tham khảo ảnh màn hình sau khi đã thực hiện bước 3 và 4 ở file đính kèm tên cognito1.png __

Bước 5: Đăng ký user cho App

a. Sau khi chọn Launch Hosted UI ở bước trước, trình duyệt sẽ tự động nhảy ra 1 tab mới và yêu cầu thông tin đăng nhập. Chọn sign up. b. Cung cấp Username và email, password. Lưu ý: Phải là email thật, để còn nhận code verify tài khoản! c. Check mail lấy Verification Code và chọn Confirm Account.

Bước 6: Tạo một Rest API

a. Vào AWS Management Console, click Services và chọn API Gateway.

b. Chọn Create API, chọn nút Build ở REST API

c. Chọn New API và nhập tên, ví dụ “WildRydes” cho API Name, còn lại có thể để mặc định

e. Chọn Create API

Bước 7: Tạo Cognito User Pools Authorizer

a. Bên dưới API vừa tạo, chọn Authorizers.

b. Chọn Create New Authorizer.

c. Nhập “WildRydes” cho trường Authorizer name.

d. Chọn Cognito ở phần type.

e. Ở phần Cognito User Pool, dán arn của Cognito User Pool đã tạo

g. Nhập Authorization cho mục Token Source.

h. Chọn Create.

Bước 8: Tạo resource và method cho API:

a. Trong nav bar bên left, click vào chữ Resources dưới WildRydes API.

b. Từ Actions dropdown, chọn Create Resource.

c. Nhập “ride” trong phần Resource Name.

d. Đảm bảo phần Resource Path được set là ride.

e. Chọn Enable API Gateway CORS.

f. Click Create Resource.

g. Chọn resource /ride, từ Action dropdown, chọn Create Method.

h. Chọn GET từ dropdown, sau đó click vào icon checkmark.

i. CHọn Lambda Function cho integration type. (Nếu chưa có sẵn 1 Lambda function, thì có thể tạo 1 Lambda function đơn giản, chỉ cần trả về Hello thôi cũng OK)

j. Chọn box Use Lambda Proxy integration.

k. Chọn region.

l. Nhập tên Lambda function.

m. Chọn Save.

n. Khi nhảy ra pop up yêu cầu cấp Amazon API Gateway permission để invoke function, chọn OK.

o. Chọn card Method Request.

Chọn biểu tượng cái bút chì bên cạnh chữ Authorization.

q. Chọn “WildRydes” Cognito user pool authorizer từ drop-down list, sau đó click icon check checkmark.

Bước 9: Deploy API

a. Ở Actions drop-down list, chọn Deploy API.

b. Chọn [New Stage] ở Deployment stage drop-down list.

c. Nhập “prod” for the Stage Name.

d. Chọn Deploy.

e. Ghi lại Invoke URL để dùng sau này.

Bước 10: Lấy access token để test

a. Quay lại màn hình manage cognito, chọn App client setting ở navigation pane, và click vào Launch Hosted UI

b. Khi nhảy sang tab đăng nhập, lưu ý nhìn trên thanh URL sẽ có dạng link như này: 

https://cogdemoaaa.auth.ap-northeast-1.amazoncognito.com/login?client_id=2dqsidi23cijtg7vt2p1aldrgd&response_type=code&scope=aws.cognito.signin.user.admin+email+openid+phone+profile&redirect_uri=https://example1.com/callback

c. Sửa đoạn response_type=code&scope thành response_type=token&scope và nhấn enter, đăng nhập.

d. Sau khi đăng nhập thành công, bạn có thể copy thanh hiển thị URL, sẽ được dạng như sau:

https://example1.com/callback#id_token=eyJraWQiOiI3RU9zaU9TSUdmdzlzV0gxYzE2VjVTUHNQNXIzTEIrd21CTHNoNEVrRklVPSIsImFsZyI6IlJTMjU2In0.eyJhdF9oYXNoIjoiMFQ0YlJ1QzViSTJldEV5a1RkMlVqUSIsInN1YiI6IjBkZTU0NTAwLWQxZDgtNGY5NS05MTNkLWMzODNkYjI1ZjAxMCIsImF1ZCI6IjVkcnFpMmcwa3RkZ2gwamw0cDgxb3BtYTRuIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjM3MzA0MDQ3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbVwvYXAtbm9ydGhlYXN0LTFfTlhTM05KeTRyIiwiY29nbml0bzp1c2VybmFtZSI6InllbnR0aCIsImV4cCI6MTYzNzMwNzY0NywiaWF0IjoxNjM3MzA0MDQ3LCJqdGkiOiJlY2E3ZGFiMS05NGFjLTRjZWItOGM5MC0yNTI3YWRjNTcwODYiLCJlbWFpbCI6InRyaW5oaGFpeWVuNzlAZ21haWwuY29tIn0.hZAOHFnmUlc50WhJAM-JmiqmuFHnnhnOzQbXRD842Fj-zpSutLbWy-VZ9Dm91rOpV5RlMuRxGuCrzoCP9vS9f1DfcKw1Y4bSjh_HWWsDO8zK2tXlq9guBQQIws-IQJunZa0SYXWgZUMhsvE9XX6WVBF6SBvfow_63liB25J1eEBjUShw84o-pWtwSaSIvcTbo1xxYxfvgW4jAsxNO3YU0K7iRdmHPUeNeYeCxo0MVInQ3o-qiLEVJxfpnFG-lm1SxEt8iLw9qHh8UuryBSxdpafDhgeTiaalA-AlaXUOZaupTbXL9KB5pt2QU-UD4fL3JltfBJnbrP7ESi-SZD_LhQ&access_token=eyJraWQiOiJubVZkNHdGNWM1WDBscDZYVFl4K2JIWXR0MVQ4OTJnZFZKM0drNUZvTlEwPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIwZGU1NDUwMC1kMWQ4LTRmOTUtOTEzZC1jMzgzZGIyNWYwMTAiLCJ0b2tlbl91c2UiOiJhY2Nlc3MiLCJzY29wZSI6ImF3cy5jb2duaXRvLnNpZ25pbi51c2VyLmFkbWluIHBob25lIG9wZW5pZCBwcm9maWxlIGVtYWlsIiwiYXV0aF90aW1lIjoxNjM3MzA0MDQ3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbVwvYXAtbm9ydGhlYXN0LTFfTlhTM05KeTRyIiwiZXhwIjoxNjM3MzA3NjQ3LCJpYXQiOjE2MzczMDQwNDcsInZlcnNpb24iOjIsImp0aSI6ImYwMWE2NzY5LTRjYWYtNDE5MC1hMTRlLWU3ZGFiNGViNDRiYSIsImNsaWVudF9pZCI6IjVkcnFpMmcwa3RkZ2gwamw0cDgxb3BtYTRuIiwidXNlcm5hbWUiOiJ5ZW50dGgifQ.b3XCUQrSbJM8gIC0OE5y7h444FoNEA7ixod1Z9UdDTF6a7nisRt0BbiooIAKnuviYNzHYO7teXdiQnLCcn5aQ5jOQdSWxE6nJqXHHAHVzqlDIAyzocmYpIlC2pRhLRDqQuDh3ZbdRWsq9hLp7x1fmCYa88LDh86z8-rJnAl-5jhTxowgofOlSP-1ag1oZphZIo8gPodPosxhsATxU9FSV2SgqANdbj4P-IpLhUzUVAaUKU982G1wdRsC5gpZo_7ZKdOANDZ203QlNm55Gc7GkVN7MnCs66zgDdH92N3cehVSIcIwD-6dBcBAvs8J2Ibq1loSx2xQJYAtsWY1MhnIow&expires_in=3600&token_type=Bearer

Tìm từ access_token=, và copy hết token, dán ra 1 chỗ riêng để dùng. Đây chính là access token mà bạn có thể dùng để test việc integrate Cognito của bạn. Việc còn lại chỉ là dán token vào, và test, easy life! 

Kết quả testing của guide này, bạn có thể tham khảo tệp đính kèm tên cognito2.png

Done! Cognito hóa ra cũng dễ chứ không khó chút nào! Cross account của AWS lại càng dễ, thay vì chọn trực tiếp, thì ta dán ARN vào giống như cách ta làm cross-account cho IAM hoặc S3 là xong

Cognito1.png:

Cognito

Cognito2.png:

Cognito

 

Bạn thấy bài viết này như thế nào?
3 reactions

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.

Bài viết liên quan

Khám phá FinOps

Khám phá FinOps - công nghệ đám mây

Nhiều doanh nghiệp ngày nay lựa chọn chuyển sang công nghệ đám mây với hi vọng đạt được lợi thế cạnh tranh so với đối thủ nhờ tiềm năng về hiệu quả cao và tiết kiệm chi phí hơn của công nghệ này.
Microservices Roadmap

Microservices Roadmap

- Kafka, RabbitMQ, Amazon SQS: Efficient and reliable message brokers for seamless communication between microservices.
The Data Analyst Roadmap

The Data Analyst Roadmap

**Database Knowledge**: Gain proficiency in working with databases like MySQL, PostgreSQL, or MongoDB.
Architectural patterns in software design

Architectural patterns in software design

Choose the architecture that aligns with your application's unique needs and goals. Each pattern offers a tailored approach to elevate your software system!
Exploring the Technological Marvel Behind Netflix

Exploring the Technological Marvel Behind Netflix

Ever wondered about the tech wizardry that powers your binge-watching adventures on Netflix?