

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 如何解決 AWS SDKs IAM Identity Center 身分驗證
<a name="understanding-sso"></a>



## 相關的 IAM Identity Center 術語
<a name="ssoterms"></a>

下列術語可協助您了解背後的程序和組態 AWS IAM Identity Center。適用於 AWS SDK APIs 的文件針對其中一些身分驗證概念使用與 IAM Identity Center 不同的名稱。知道這兩個名稱會很有幫助。

下表顯示替代名稱如何互相關聯。


| IAM Identity Center 名稱 | SDK API 名稱 | Description | 
| --- | --- | --- | 
| Identity Center  | sso  | 雖然已重新命名 AWS 單一登入，但 sso API 命名空間會保留其原始名稱，以用於回溯相容性。如需詳細資訊，請參閱《AWS IAM Identity Center 使用者指南》中的 [IAM Identity Center 重新命名](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed)。 | 
| IAM Identity Center 主控台管理主控台 |   | 您用來設定單一登入的主控台。 | 
| AWS 存取入口網站 URL  |  | IAM Identity Center 帳戶的唯一 URL，例如 https://xxx.awsapps.com/start。您可以使用 IAM Identity Center 登入憑證登入此入口網站。 | 
| IAM Identity Center Access Portal 工作階段  | 身分驗證工作階段  | 為發起人提供承載存取字符。 | 
| 許可集工作階段  |   | 軟體開發套件在內部用來進行 AWS 服務 呼叫的 IAM 工作階段。在非正式討論中，您可能會看到此錯誤稱為「角色工作階段」。 | 
| 許可集登入資料  | AWS 登入資料sigv4 登入資料  | 軟體開發套件實際用於大多數 AWS 服務 呼叫的登入資料 （特別是所有 sigv4 AWS 服務 calls)。在非正式討論中，您可能會看到這不正確地稱為「角色登入資料」。 | 
| IAM Identity Center 憑證提供者  | SSO 登入資料提供者  | 如何取得登入資料，例如提供 功能的類別或模組。 | 

## 了解 的 SDK 登入資料解析 AWS 服務
<a name="idccredres"></a>

IAM Identity Center API 會交換 sigv4 登入資料的承載字符登入資料。大多數 AWS 服務 是 sigv4 APIs，但有一些例外狀況，例如 Amazon CodeWhisperer 和 Amazon CodeCatalyst。以下說明登入資料解析程序，支援透過 對應用程式碼進行大多數 AWS 服務 呼叫 AWS IAM Identity Center。

### 啟動 AWS 存取入口網站工作階段
<a name="idccredres1"></a>
+ 使用您的登入資料登入工作階段，以啟動程序。
  + 在 AWS Command Line Interface () 中使用 `aws sso login`命令AWS CLI。如果您還沒有作用中的工作階段，這會啟動新的 IAM Identity Center 工作階段。
+ 當您啟動新的工作階段時，您會收到來自 IAM Identity Center 的重新整理權杖和存取權杖。 AWS CLI 也會使用新的存取權杖更新 SSO 快取 JSON 檔案，並重新整理權杖，讓軟體SDKs使用。
+ 如果您已經有作用中的工作階段， AWS CLI 命令會重複使用現有的工作階段，並會在現有的工作階段過期時過期。若要了解如何設定 IAM Identity Center 工作階段的長度，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[設定使用者 AWS 存取入口網站工作階段的持續時間](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-user-session.html)。
  + 工作階段長度上限已延長至 90 天，以減少頻繁登入的需求。

### 開發套件如何取得 AWS 服務 呼叫的登入資料
<a name="idccredres2"></a>

當您執行個體化每個服務的用戶端物件 AWS 服務 時，SDKs會提供 的存取權。為 IAM Identity Center 登入資料解析設定共用 AWS `config`檔案的所選設定檔時，IAM Identity Center 會用來解析應用程式的登入資料。
+ 建立用戶端時，[登入資料解析程序](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain)會在執行時間完成。

若要使用 IAM Identity Center 單一登入來擷取 sigv4 APIs 的登入資料，開發套件會使用 IAM Identity Center 存取字符來取得 IAM 工作階段。此 IAM 工作階段稱為許可集工作階段，它透過擔任 IAM 角色來提供 SDK 的 AWS 存取權。
+  許可集工作階段持續時間與 IAM Identity Center 工作階段持續時間獨立設定。
  + 若要了解如何設定許可集工作階段持續時間，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[設定工作階段持續時間](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)。
+  請注意，在大多數 AWS SDK API 文件中，許可集登入資料也稱為*AWS 登入資料*和 *sigv4 登入*資料。

許可集登入資料會從 IAM Identity Center API 的 [getRoleCredentials](https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_GetRoleCredentials.html) 呼叫傳回至 SDK。SDK 的用戶端物件使用 擔任的 IAM 角色來呼叫 AWS 服務，例如要求 Amazon S3 列出您帳戶中的儲存貯體。用戶端物件可以繼續使用這些許可集憑證來操作，直到許可集工作階段過期為止。

### 工作階段過期和重新整理
<a name="idccredres3"></a>

使用 時[SSO 權杖提供者組態](feature-sso-credentials.md#sso-token-config)，從 IAM Identity Center 取得的每小時存取權杖會使用重新整理權杖自動重新整理。
+ 如果存取字符在 SDK 嘗試使用時已過期，則 SDK 會使用重新整理字符來嘗試取得新的存取字符。IAM Identity Center 會將重新整理字符與您的 IAM Identity Center 存取入口網站工作階段持續時間進行比較。如果重新整理字符未過期，IAM Identity Center 會以另一個存取字符回應。
+ 此存取權杖可用來重新整理現有用戶端的許可集工作階段，或解析新用戶端的登入資料。

不過，如果 IAM Identity Center 存取入口網站工作階段已過期，則不會授予新的存取字符。因此，無法續約許可集持續時間。每當快取的許可設定現有用戶端的工作階段長度逾時時，就會過期 （且將失去存取權）。

一旦 IAM Identity Center 工作階段過期，任何建立新用戶端的程式碼都會失敗身分驗證。這是因為未快取許可集登入資料。在您擁有有效的存取權杖之前，您的程式碼將無法建立新的用戶端並完成登入資料解析程序。

總而言之，當開發套件需要新的許可集登入資料時，開發套件會先檢查任何有效的現有登入資料，並使用這些登入資料。無論登入資料是用於新用戶端，還是具有過期登入資料的現有用戶端，這都適用。如果找不到登入資料或登入資料無效，則 SDK 會呼叫 IAM Identity Center API 以取得新的登入資料。若要呼叫 API，它需要存取權杖。如果存取權杖已過期，開發套件會使用重新整理權杖嘗試從 IAM Identity Center 服務取得新的存取權杖。如果您的 IAM Identity Center 存取入口網站工作階段未過期，則會授予此權杖。