因為需要提供 PM 來 login 建立好的 QuickSight,所以嘗試使用 cognito 來進行 account 的管理,透過 cognito login 後,開始使用 QuickSight 服務
遇到的 error
- Individuals in my organization get an “External Login is Unauthorized” message when they try to access Amazon QuickSight - Amazon QuickSight 遇到這個問題,看了很久,還沒有找到解法
- 經過一段時間的嘗試、google 後,主要是需要用 AssumeRoleWithWebIdentity 的方式,來設定 session name,以便產生需要的 amazon credentials data
- 而 AssumeRoleWithWebIdentity 中,是用到 sts 來取得 amazon credentials
- Class: AWS.WebIdentityCredentials — AWS SDK for JavaScript javascript SDK 的取法
- Class: AWS.STS — AWS SDK for JavaScript STS 中關於 AssumeRoleWithWebIdentity 的說明
- assume-role-with-web-identity — AWS CLI 1.22.26 Command Reference local 測試,command line 的作法
嘗試的作法
- Federate Amazon QuickSight access with Okta | AWS Big Data Blog
- Using identity federation and single sign-on (SSO) with Amazon QuickSight - Amazon QuickSight
解 jwt 的方式
- auth0/jwt-decode: Decode JWT tokens; useful for browser applications. 用這個 github 中的檔案
- awslabs/aws-jwt-verify: NodeJS library for verifying JWTs signed by Amazon Cognito, and any OIDC-compatible IDP that signs JWTs with RS256
需要 enhance 的部分
- 使用 QuickSight API 來新增 QuickSight User & Assign group,以方便使用 quicksight
Background Knowledge
- Identity providers and federation - AWS Identity and Access Management 這篇需要好好讀一讀,特別是有關 web identity federation 的部分
- Enable Your Federated Users to Work in the AWS Management Console for up to 12 Hours | AWS Security Blog 說明 identity federation 的 blog
- Enabling custom identity broker access to the AWS console - AWS Identity and Access Management 使用 getSigninToken 的方式進行, 參考這篇的 python code 加以修改
- aws-doc-sdk-examples/federated_url.py at main · awsdocs/aws-doc-sdk-examples 範例的 python code
- STS — Boto3 Docs 1.20.26 documentation 有關 sts boto3 的說明
Reference
- QuickSight Workshops - User-based Embedding 主要依照這份來修改,將 lambda & api-gateway 另外用 serverless framework 來建立
- Use Amazon QuickSight Federated Single Sign-On with Amazon Cognito User Pools | Noise 另一種整合 cognito & quicksight 的方式。試過後,由 cognito auth 的 account 導至 quicksight 後,因為是透過 IAM login,會是同一個 quicksight 帳號,暫時不用這個方式