Cognito

首先Cognito沒有提供登錄至AWS控制臺的功能,然而您可以通過Cognito Identity Pool獲取到IAM role的credentials [1],再另外通過代碼自行將IAM role credentials拼湊成AWS控制臺登錄的URL [2]。

最后,由于Cognito的使用除了User Pool以及Identity Pool的創建以及配置以外,在登錄及認證的流程中都必須依賴API(通過AWS CLI或代碼),因此您可以先參考文檔資源 [6] 熟悉這項服務。

Q2. cognito底層是否是OIDC協議?AWS自己的協議還是Oauth?

A2. Cognito支持OAuth 2.0及OIDC [7],沒有另外自己開發協議。

  1. 調用 initiate-auth [2] 手動向User Pool發起登錄,獲取token。
    命令:
    aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=,PASSWORD= --client-id --region
    輸出:
    {
    “ChallengeParameters”: {},
    “AuthenticationResult”: {
    “AccessToken”: “”,
    “ExpiresIn”: 3600,
    “TokenType”: “Bearer”,
    “RefreshToken”: “”,
    “IdToken”: “”
    }
    }

  2. 參考文檔 [3] 的「增強型流程(Enhanced flow)」調用 get-id [4] 以及 get-credentials-for-identity [5] 獲取IAM role的AccessKeyId、SecretKey、以及SessionToken。
    命令:
    aws cognito-identity get-id --identity-pool-id <identity_pool_id> --logins cognito-idp..amazonaws.com/<user_pool_id>=<步驟1獲取的IdToken>
    輸出:
    {
    “IdentityId”: “”
    }

命令:
aws cognito-identity get-credentials-for-identity --identity-id --logins cognito-idp..amazonaws.com/<user_pool_id>=<步驟1獲取的IdToken>
輸出:
{
“IdentityId”: “”,
“Credentials”: {
“AccessKeyId”: “”,
“SecretKey”: “”,
“SessionToken”: “”,
“Expiration”: “”
}
}

  1. 如同一般的IAM role credentials,在credentials到期前配置并使用AccessKeyId、SecretKey、以及SessionToken [6]。

也提供文檔說明 [7] 供您參考。

希望以上信息能對您有所幫助,歡迎您再度聯系亞馬遜技術支持。

參考文檔:
[1] Common Amazon Cognito scenarios - Access AWS services with a user pool and an identity pool - https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-scenarios.html#scenario-aws-and-user-pool
[2] https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/initiate-auth.html
[3] 如何使用 Amazon Cognito 身份池授予用戶訪問 AWS 服務的權限? - https://repost.aws/zh-Hans/knowledge-center/cognito-identity-pool-grant-user-access
[4] https://docs.aws.amazon.com/cli/latest/reference/cognito-identity/get-id.html
[5] https://docs.aws.amazon.com/cli/latest/reference/cognito-identity/get-credentials-for-identity.html
[6] Configuration and credential file settings in the AWS CLI - https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html
[7] Accessing AWS services using an identity pool after sign-in - https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html

AssumeRoleWithWebIdentity 與Identity Pool的搭配適用于當您在Identity Pool選擇了Basic authflow的時候 [1]。您可以參考文檔 [1] 或是 [2] 的Basic authflow(基本流程),當您使用了Basic authflow的時候,在調用了 get-id 后,您便會需要依序調用 get-open-id-token [3] 以及 assume-role-with-web-identity [4] 來去獲取到IAM role的credentials,而不是使用 get-credentials-for-identity。

命令:
aws cognito-identity get-open-id-token --identity-id “” --logins cognito-idp..amazonaws.com/<user_pool_id>=<步驟1獲取的IdToken>

輸出:
{
“IdentityId”: “”,
“Token”: “”
}

命令:
aws sts assume-role-with-web-identity --role-arn “<指定事先配置好的IAM role>” --web-identity-token “” --role-session-name “<自定義session名>”

輸出:
{
“Credentials”: {
AccessKeyId": “”,
SecretAccessKey": “”,
SessionToken": “”,
Expiration": “”
},
“SubjectFromWebIdentityToken”: “”,
“AssumedRoleUser”: {
“AssumedRoleId”: “”,
“Arn”: “”
},
“Provider”: “cognito-identity.amazonaws.com”,
“Audience”: “”
}

參考文檔:
[1] Identity pools authentication flow - https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html
[2] 如何使用 Amazon Cognito 身份池授予用戶訪問 AWS 服務的權限? - https://repost.aws/zh-Hans/knowledge-center/cognito-identity-pool-grant-user-access
[3] https://docs.aws.amazon.com/cli/latest/reference/cognito-identity/get-open-id-token.html
[4] https://docs.aws.amazon.com/de_de/cli/latest/reference/sts/assume-role-with-web-identity.html

簡單來說,通過Enhanced authflow您拿到的IAM role是由送交給Identity Pool的token內容決定,IAM role的對應也是在Identity Pool里面配置。而Basic authflow拿到的IAM role則是在調用 AssumeRoleWithWebIdentity 的時候由發起人決定。例如在Enhanced authflow您可以設置只要登錄成功調用get-credentials-for-identity就返回IAM role A,沒有登錄就返回IAM role B。在Basic authflow由于沒有mapping的功能,就必須另外配置IAM role,然后再通過 IAM 的 AssumeRoleWithWebIdentity 獲取IAM role。

詳細的說明以及流程圖請您直接參考文檔 [1],為了您的方便,也為您節錄文檔說明如下,由于文檔的中文為機器翻譯,為了避免機器翻譯的翻譯問題,以下將為您節錄原文。

「The basic workflow gives you more granular control over the credentials that you distribute to your users. The GetCredentialsForIdentity request of the enhanced authflow requests a role based on the contents of an access token. The AssumeRoleWithWebIdentity request in the classic workflow grants your app a greater ability to request credentials for any AWS Identity and Access Management role that you have configured with a sufficient trust policy. You can also request a custom role session duration.

You can sign in with the Basic authflow in user pools that don’t have role mappings. This type of identity pool doesn’t have a default authenticated or unauthenticated role, and doesn’t have role-based or attribute-based access control configured. When you attempt GetOpenIdToken in an identity pool with role mappings, you receive the following error.

Basic (classic) flow is not supported with RoleMappings, please use enhanced flow.」

參考文檔:
[1] Identity pools authentication flow - https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EfficientNet 改進:與Transformer結合的圖像分類模型

1.介紹 在計算機視覺領域,EfficientNet因其高效的網絡架構設計而廣受歡迎。 本文將深入分析一個結合EfficientNet主干和Transformer分類頭的創新模型實現。 模型概述 這個實現將EfficientNet的高效特征提取能力與Transformer的強大序列建模能力相結合,主要包含以下幾個核心…

復雜網絡系列:第 5 部分 — 社區檢測和子圖

關鍵詞&#xff1a;Community Detection Algorithms 一、說明 在本教程中&#xff0c;我們將探討網絡分析的兩個基本方面&#xff1a;社區檢測和使用子圖。了解這些概念將使您能夠發現復雜網絡中隱藏的結構和關系。 二、何為社區&#xff0c;何為社區檢測&#xff1f; 2.1 …

【辦公類-99-04】20250504閔豆統計表excle轉PDF,合并PDF、添加中文字體頁眉+邊框下劃線

需求說明 督導檢查&#xff0c;各條線都要收集資料。 今天去加班&#xff0c;遇到家教主任&#xff0c;她讓我用保教主任的彩色打印機打印這套活躍度表格。&#xff08;2023學年上學期下學期-2024學年上學期&#xff0c;就是202309-202504&#xff09; 每個excle都是內容在A4一…

升級 CUDA Toolkit 12.9 與 cuDNN 9.9.0 后驗證指南:功能與虛擬環境檢測

#工作記錄 在 NVIDIA 發布 CUDA Toolkit 12.9 與 cuDNN 9.9.0 后&#xff0c;開發者紛紛選擇升級以獲取新特性和性能提升。 CUDA Toolkit 12.9 與 cuDNN 9.9.0 發布&#xff0c;帶來全新特性與優化-CSDN博客 然而&#xff0c;升級完成并不意味著大功告成&#xff0c;確認升級后…

LLM論文筆記 28: Universal length generalization with Turing Programs

Arxiv日期&#xff1a;2024.10.4機構&#xff1a;Harvard University 關鍵詞 圖靈機 CoT 長度泛化 核心結論 Turing Programs 的提出 提出 Turing Programs&#xff0c;一種基于圖靈機計算步驟的通用 CoT 策略。通過將算法任務分解為逐步的“磁帶更新”&#xff08;類似圖靈…

【全隊項目】智能學術海報生成系統PosterGenius--圖片布局生成模型LayoutPrompt(1)

&#x1f308; 個人主頁&#xff1a;十二月的貓-CSDN博客 &#x1f525; 系列專欄&#xff1a; &#x1f3c0;大模型實戰訓練營_十二月的貓的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻擋不了春天的腳步&#xff0c;十二點的黑夜遮蔽不住黎明的曙光 目錄 1. 前…

位圖的實現和拓展

一&#xff1a;位圖的介紹 ①&#xff1a;需要位圖的場景 給40億個不重復的無符號整數&#xff0c;沒排過序。給一個無符號整數&#xff0c;如何快速判斷一個數是否在這40億個數中&#xff1f; 要判斷一個數是否在某一堆數中&#xff0c;我們可能會想到如下方法&#xff1a; A…

排序功法入門指南【江湖算法筆記】

話說江湖風云變幻&#xff0c;各路英雄好漢行走江湖&#xff0c;總得有個名號排行。若問“東邪西毒南帝北丐”誰強誰弱&#xff0c;總得排個座次不是&#xff1f;這排序之道&#xff0c;恰似武功秘籍&#xff0c;練好了能號令群雄&#xff0c;練岔了怕是要被笑掉大牙&#xff0…

【中間件】brpc_基礎_用戶態線程中斷

bthread之用戶態線程中斷 源碼 1 簡介 interrupt_pthread 核心功能是 通過信號機制中斷阻塞的 pthread 線程&#xff0c;以實現線程的協作式中斷。 2 核心功能與設計 2.1 信號選擇與注冊 信號選擇&#xff1a;使用 SIGURG 作為中斷信號。 原因&#xff1a;SIGURG 通常用于…

Linux 的網絡卡

#本機操作系統CentOS 10 #核心版本 rootbogon:/etc# uname -r 6.12.0-65.el10.x86_64 網卡能不能被捉到可以使用【dmesg|grep xx】來判斷&#xff0c;有沒有驅動則可以使用lsmod看看模塊有沒有加載核心&#xff01;最后&#xff0c;以ifconfig xxx測試看看 觀察核心所捉到的網卡…

前端雙工通信的幾種方案詳細描述

前端實現雙工通信&#xff08;全雙工或半雙工&#xff09;的常見方案及詳細實現如下&#xff1a; 一、WebSocket&#xff08;全雙工&#xff09; 原理&#xff1a;基于 TCP 的持久化協議&#xff0c;客戶端與服務端建立雙向通信通道&#xff0c;支持實時雙向數據傳輸。 // 客…

KUKA機器人快速啟動設置

KUKA機器人在首次開機啟動時&#xff0c;有時在示教器上需要進行投入運行等相關的設置。如以下相關的信息需要處理&#xff1a; 1、機器人系統開機后&#xff0c;選擇T1運行模式&#xff1b;2、顯示提示信息&#xff1a;“RDC 存儲器和控制系統不一致什么被更換了”時&#xf…

游戲代碼C

以下將結合不同編程語言的特點及游戲開發中的實際應用&#xff0c;展示多種語言的游戲代碼示例&#xff08;以簡單游戲為例&#xff0c;展示代碼結構和邏輯差異&#xff09;。由于代碼篇幅較長&#xff0c;我將分語言進行說明并引用相關來源&#xff1a; 1. C# Unity&#xff…

LangChain Agent核心解析:Zero-Shot-ReAct策略實現與實戰指南

引言 在LangChain的Agent框架中&#xff0c;zero-shot-react-description 是一種預定義的Agent類型&#xff0c;它結合了Zero-Shot&#xff08;零樣本學習&#xff09; 和 ReAct&#xff08;推理行動&#xff09; 策略&#xff0c;主要用于根據工具的描述動態選擇和執行工具&a…

PyQt 或 PySide6 進行 GUI 開發文檔與教程

一、官網文檔 Qt 官方文檔&#xff1a;Porting to Qt 6 | Qt 6.9Qt 維基&#xff1a;???????Qt WikiQt for Python (PySide6) &#xff1a;???????Qt for Python - Qt WikiPySide6 快速上手指南&#xff1a;???????Getting Started - Qt for Python PyS…

2024年第十五屆藍橋杯省賽B組Python【 簡潔易懂題解】

2024年第十五屆藍橋杯省賽B組Python題解 一、整體情況說明 2024年第十五屆藍橋杯省賽B組Python組考試共包含8道題目&#xff0c;分為結果填空題和程序設計題兩類。 考試時間&#xff1a;4小時編程環境&#xff1a;Python 3.x&#xff0c;禁止使用第三方庫&#xff0c;僅可使…

Go語言--語法基礎4--基本數據類型--類型轉換

Go 是一種強類型的語言&#xff0c;所以如果在賦值的時候兩邊類型不一致會報錯。一個類型的值可以被轉換成另一種類型的值。由于 Go 語言不存在隱式類型轉換&#xff0c;因此所有的類型轉換都必須顯式的聲明。 強制類型轉換語法 使用 type (a) 這種形式來進行強制類型轉換&am…

nginx 代理時怎么更改 Remote Address 請求頭

今天工作中遇到用 localhost 訪問網站能訪問后臺 api&#xff0c;但是用本機IP地址后就拒絕訪問&#xff0c;我懷疑是后臺獲取 Remote Address 然后設置白名單了只能 localhost 訪問。 想用 nginx 更改 Remote Address server {listen 8058;server_name localhost;loca…

LeetCode刷題鏈表

文章目錄 鏈表總結 常用技巧兩數相加題解代碼 兩兩交換鏈表中的節點題解代碼 重排鏈表題解代碼 合并k個升序鏈表題解代碼 K個一組翻轉鏈表題解代碼 鏈表總結 常用技巧 畫圖 直觀 形象 便于理解引入虛擬頭節點&#xff0c;便于處理邊界情況&#xff0c;方便我們對鏈表進行…

ESP32S3 多固件燒錄方法、合并多個固件為單一固件方法

ESP32S3 多固件燒錄方法、合并多個固件為單一固件方法 文章目錄 ESP32S3 多固件燒錄方法、合并多個固件為單一固件方法前言1、前期準備工作2、多固件燒錄方法3、單固件燒錄方法總結 前言 使用正點原子的ESP32S3 BOX開發板獨立燒錄編譯生成的xxx.bin固件無法正常運行起來&#…