AWS Cognito學習筆記

Murmur

學習初期我搞混 user pool、identity pool 的定位,以至於想直接拿 OIDC identity provider 去串 identity pool,
然後就踩到了一些 Cognito 的 bug XD

首先是 Amazon developer “Login with Amazon” 的後台,似乎不支援我在AWS 後台開啟的 MFA,
以至於任何操作都會錯誤

接著是 Cognito identity pool 吃 OIDC ID token 的時候,
注意 sub 必須是 string,要是丟給它 number 會直接 internal server error 而沒有原因 XD

摘要

「User pool」是會員中心的概念,接受各種社交網路、OIDC IDP 的會員註冊到 user pool
「Identity pool」的用途是讓 user 取得 temporary token 以使用 AWS 的服務,也接受各種 IDP 的會員登入並擁有自己在 pool 中的 ID

雖然兩個 pool 都能串各種 IDP,但 user pool 額外提供的功能諸如:登入介面、重設密碼、MFA、匯入User

Access control

User pool 串接 resource server

登入 user pool 之後會獲得 JWT 格式的 access token、id token,這些 token 可以附在對 resource server 呼叫的 Authorization header 之中。
Resource server 可以用 iss claim 連線到「{{ iss }}/.well-known/jwks.json」下載公鑰來驗證 JWT

User pool – Group

User pool 藉由把使用者加入一個 group,使其獲得 IAM Role。
或者 group 會出現在 Cognito 登入後獲得的 JWT 格式 Access token、ID token 中的「 cognito:group 」宣告,並讓 resource server 根據宣告自己做控制

IAM role

當你把 user pool 與 identity pool 一起使用時,
user pool 的 access token 中會帶有可用的 roles,以及 custom attribute。
identity pool 可以為每一個 IDP 自訂一套決定 IAM Role 的過程

Fine-grained policy

User pool 的 Access token 之中的屬性還能用在 IAM Policy 裡面

後記

Access control 有太多實作的方式,感覺這篇文章便是在描述各種方式,值得參考

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *