# Cognito :::info 日期 : 2025/04/10 ::: Cognito 是個使用者身分驗證與管理服務 ------- #### 組成要素 User Pool : 管理使用者帳號(註冊、登入、密碼、驗證碼、Token) Identity Pool : 把已登入的使用者對應到 IAM 身分(ex. 登入後可以存取 S3) Identity Federation : 第三方登入整合(Google、Facebook、Apple、SAML 等) --- #### User Pool * 使用者註冊 / 登入 * 發送驗證碼(典型 MFA) * 密碼重設、帳號驗證流程 * 登入成功後產生三種JWT Token (類似註冊後的會員卡) * Access Token : 給前端看用戶資訊(包含 email、名字) * ID Token : 給後端 API 驗證用,判斷用戶身份與權限(ex. 能不能看資料)(包含 user id / scope / 群組) * Refresh Token : 用來換新 ID / Access Token(延長登入) *為甚麼不統一端? 因為前端是任何使用者可見、可修改的環境 (ex. JavaScript),而又不能沒有前端 (因為需要顯示畫面跟互動...),故需要存在後端判斷權限、保護資源 --- #### Cognito Identity Pool 發 Temporary AWS credentials,讓已經登入的使用者自動對應到 IAM Role,可以存取 AWS 資源 --- #### 架構 1. User Pool 做登入驗證,成功後拿Token(ID、Access、Refresh) 2. 拿 ID Token 在 Identity Pool,呼叫 STS 證明身分,換 AWS credentials(包含 Access Key + Secret Access Key + Session Token) 3. 使用 credentials 存取 AWS 服務 *STS(Security Token Service)是個用來簽發Temporary AWS credentials 的服務  --- https://docs.aws.amazon.com/zh_tw/cognito/latest/developerguide/cognito-scenarios.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up