AWS IAM — Cognito
Amazon Cognito เป็น service ซึ่งทําหน้าที่จัดการเกี่ยวกับ Identity โดย Cognito มีความสามารถหลากหลายอย่าง มีหลักๆ 3 อย่างด้านล่างนี้
- ทําหน้าที่เป็น Identity Broker รองรับ Identity Provider หลากหลายตัวเช่น Amazon, Facebook, Google และ enterprise identity providers เช่น Microsoft Active Directory via SAML
- ความสามารถในการทําตัวเป็น Pools แบบ User Pools และ Identity Pools
- Push Synchronization ที่ทําหน้าที่ส่ง push notification แบบ silent ไปที่ devices ต่างๆที่เกี่ยวข้องกับ user ID เพื่อให้อัพเดต data
การจัดการ Pools แบ่งเป็น 2 อย่าง
- User Pools
สั้นๆคือเพื่อทํา authentication (identify verification)
คือ Directories ที่มีไว้เพื่อใช้ในการจัดการ Sign-up และ Sign-in สําหรับ mobile และ web applications โดยที่ Users สามารถ sign-in ไปตรงๆที่ User pools เลยก็ได้ หรือ จะทําผ่าน Identity Provider ต่างๆเช่น Facebook, Amazon และ Google
โดยหลังจากทําการ authentication เสร็จแล้วเราจะได้สิ่งที่เรียกว่า JSON Web Tokens (JWTs) เพื่อนําไปใช้กับ Identity Pools เพื่อให้ได้ access credentials มาเพื่อเข้าถึง AWS Cloud
- Identity Pools
สั้นๆคือเพื่อทํา authorization (access control)
ใช้ในการ authorize users เพื่อให้สามารถเข้าถึง AWS Cloud ได้ โดยเราสามารถที่จะนํา Identity Providers หลายๆเจ้าเช่น Amazon, Facebook, Twitter เป็นต้น โดยที่เราไม่จําเป็นต้องทําการ Registration ใดๆเลย
และเมื่อเราทํา authentication สําเร็จ เราจะได้ temporary access มาใช้เข้าถึง AWS Cloud
การทํา Push Synchronization
Amazon Cognito ยังทําการ tracks การทํางานระหว่าง user identity และ devices อื่นๆที่ทําการ Sign-in ด้วย
ด้วยการทําอย่างนี้จึงต้องมีการทําให้เกิดรอยต่อระหว่างการใช้งานในหลายๆๆ devices ให้น้อยที่สุดด้วยการส่ง Push Synchronization ไปที่ devices ต่างๆๆเพื่อทําการ update data ให้ทุก devices เป็น latest นั้นเอง
โดย Amazon Cognito จะใช้ Amazon SNS เพื่อส่ง push notification นี้ออกไป
Common Amazon Cognito Scenarios
- โดยปกติแล้วเมื่อเราทําการ authenticate ด้วย user pool เสร็จแล้ว เราสามารถที่จะกําหนดให้มันเข้าถึง Resources ของเรา (โดยไปผูกกับ IAM Role)
- หรือเราสามารถใช้ user pool ในการจํากัดการเข้าถึง REST API พวก API Gateway และ Lambda ได้
- การจะเข้าถึง AWS services ของ AWS ได้ต้องทําการผ่าน Identity pool (authorization) ซึ่งเราทําการผ่าน User pool (authentication) ก่อนนั้นเอง โดยเราสามารถดูจากรูปด้านล่างที่แสดงให้เห็นว่าเรา authenticate กับ IdP ทั้งหลายเผื่อให้ได้ tokens มาแล้วเอา token นั้นมาใช้กับ identity pool เพื่อได้ temporary access นั้นเอง
บทความด้านล่างควรไปอ่านต่อจะเข้าใจการทํางานชัดเจนมากขึ้นเยอะๆเลย