

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

# 單一登入存取 SAML 2.0 和 OAuth 2.0 應用程式
<a name="customermanagedapps-saml2-oauth2"></a>

IAM Identity Center 可讓您為使用者提供 SAML 2.0 或 OAuth 2.0 應用程式的單一登入存取權。下列主題提供 SAML 2.0 和 OAuth 2.0 的高階概觀。

**Topics**
+ [SAML 2.0](#samlfederationconcept)
+ [OAuth 2.0](#oidc-concept)

## SAML 2.0
<a name="samlfederationconcept"></a>

SAML 2.0 是產業標準，用於安全交換 SAML 聲明，在 SAML 授權機構 （稱為身分提供者或 IdP) 和 SAML 2.0 消費者 （稱為服務提供者或 SP) 之間傳遞有關使用者的資訊。IAM Identity Center 會使用此資訊，為有權在存取入口網站內使用應用程式的使用者提供聯合單一登入 AWS 存取。

**注意**  
IAM Identity Center 不支援驗證來自 SAML 應用程式傳入 SAML 身分驗證請求的簽章。

## OAuth 2.0
<a name="oidc-concept"></a>

OAuth 2.0 是一種通訊協定，可讓應用程式安全地存取和共用使用者資料，而無需共用密碼。此功能為使用者提供安全且標準化的方式，以允許應用程式存取其資源。不同的 OAuth 2.0 授予流程可促進存取。

IAM Identity Center 可讓在公有用戶端上執行的應用程式擷取臨時憑證，以透過程式設計方式代表其使用者存取 AWS 帳戶 和服務。公有用戶端通常是用於在本機執行應用程式的桌上型電腦、筆記型電腦或其他行動裝置。在公有用戶端上執行的應用程式範例 AWS 包括 AWS Command Line Interface (AWS CLI) AWS 工具組、 和 AWS 軟體開發套件 (SDKs)。為了讓這些應用程式能夠取得登入資料，IAM Identity Center 支援以下部分 OAuth 2.0 流程：
+ 授權碼授予與程式碼交換的驗證金鑰 (PKCE) ([RFC 6749](https://www.rfc-editor.org/rfc/rfc6749#section-4.1) 和 [RFC 7636](https://www.rfc-editor.org/rfc/rfc7636))
+ 裝置授權授予 ([RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628))

**注意**  
這些授予類型只能與支援此功能 AWS 服務 的 搭配使用。這些服務可能不會在所有 中支援此授予類型 AWS 區域。請參閱有關 AWS 服務 區域差異的文件。

OpenID Connect (OIDC) 是一種以 OAuth 2.0 架構為基礎的身分驗證通訊協定。OIDC 指定如何使用 OAuth 2.0 進行身分驗證。透過 [IAM Identity Center OIDC 服務 APIs](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_Operations.html)，應用程式會註冊 OAuth 2.0 用戶端，並使用其中一個流程來取得存取字符，以提供 IAM Identity Center 受保護 APIs許可。應用程式會指定[存取範圍](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#scopes-oidc)來宣告其預期的 API 使用者。在身為 IAM Identity Center 管理員的您設定身分來源之後，如果應用程式最終使用者尚未完成登入程序，則必須完成。您的最終使用者接著必須提供其同意，以允許應用程式進行 API 呼叫。這些 API 呼叫會使用使用者的許可進行。IAM Identity Center 會傳回存取字符給應用程式，其中包含使用者同意的存取範圍。

### 使用 OAuth 2.0 授予流程
<a name="using-oauth-flows"></a>

OAuth 2.0 授予流程只能透過支援流程的 AWS 受管應用程式使用。若要使用 OAuth 2.0 流程，您的 IAM Identity Center 執行個體和您使用的任何受支援 AWS 受管應用程式必須部署在單一 中 AWS 區域。請參閱每個 的文件 AWS 服務 ，以判斷 AWS 受管應用程式的區域可用性，以及您要使用的 IAM Identity Center 執行個體。

若要使用使用 OAuth 2.0 流程的應用程式，最終使用者必須輸入應用程式將與 IAM Identity Center 執行個體連線和註冊的 URL。視應用程式而定，身為管理員，您必須為使用者提供**AWS 存取入口網站 URL** 或 IAM Identity Center 執行個體的**發行者 URL**。您可以在 [IAM Identity Center 主控台](https://console.aws.amazon.com/singlesignon/)設定頁面上找到這兩個**設定**。如需有關設定用戶端應用程式的其他資訊，請參閱該應用程式的文件。

登入應用程式並提供同意的最終使用者體驗取決於應用程式是否使用 [使用 PKCE 授予授權碼](#auth-code-grant-pkce)或 [裝置授權授予](#device-auth-grant)。

#### 使用 PKCE 授予授權碼
<a name="auth-code-grant-pkce"></a>

在具有瀏覽器的裝置上執行的應用程式會使用此流程。

1. 瀏覽器視窗隨即開啟。

1. 如果使用者尚未驗證，瀏覽器會將他們重新導向以完成使用者身分驗證。

1. 身分驗證後，使用者會收到顯示下列資訊的同意畫面：
   + 應用程式的名稱
   + 應用程式請求同意使用的存取範圍

1. 使用者可以取消同意程序，也可以提供其同意，而應用程式會根據使用者的許可繼續存取。

#### 裝置授權授予
<a name="device-auth-grant"></a>

此流程可供在含或不含瀏覽器的裝置上執行的應用程式使用。當應用程式啟動流程時，應用程式會顯示 URL 和使用者程式碼，使用者稍後必須在流程中驗證。使用者程式碼是必要的，因為啟動流程的應用程式可能在與使用者提供同意的裝置不同的裝置上執行。此程式碼可確保使用者同意他們在其他裝置上啟動的流程。

**注意**  
如果您有用戶端使用 `device.sso.region.amazonaws.com`，您必須更新授權流程以使用 Code Exchange (PKCE) 的驗證金鑰。如需詳細資訊，請參閱[《 使用者指南》中的使用 設定 IAM Identity Center 身分驗證 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)。 *AWS Command Line Interface *

1. 當流程從具有瀏覽器的裝置啟動時，瀏覽器視窗會開啟。當流程從沒有瀏覽器的裝置啟動時，使用者必須在不同的裝置上開啟瀏覽器，並前往應用程式顯示的 URL。

1. 無論哪種情況，如果使用者尚未驗證，瀏覽器都會重新導向他們以完成使用者身分驗證。

1. 身分驗證後，使用者會收到顯示下列資訊的同意畫面：
   + 應用程式的名稱
   + 應用程式請求同意使用的存取範圍
   + 應用程式呈現給使用者的使用者程式碼

1. 使用者可以取消同意程序，也可以提供其同意，而應用程式會根據使用者的許可繼續存取。

### 存取範圍
<a name="scopes-oidc"></a>

*範圍*定義可透過 OAuth 2.0 流程存取的服務存取權。範圍是服務的一種方式，也稱為資源伺服器，用於將與動作和服務資源相關的許可分組，並指定 OAuth 2.0 用戶端可以請求的粗略精細操作。當 OAuth 2.0 用戶端向 [IAM Identity Center OIDC 服務](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html)註冊時，用戶端會指定宣告其預期動作的範圍，使用者必須提供同意。

OAuth 2.0 用戶端使用 [OAuth 2.0 (RFC 6749) 第 3.3](https://www.rfc-editor.org/rfc/rfc6749.html#section-3.3) 節中定義的`scope`值，以指定針對存取字符請求的許可。請求存取權杖時，用戶端最多可指定 25 個範圍。當使用者在授權碼授予與 PKCE 或裝置授權授予流程中提供同意時，IAM Identity Center 會將範圍編碼為傳回的存取權杖。

AWS 會將範圍新增至支援 的 IAM Identity Center AWS 服務。下表列出 IAM Identity Center OIDC 服務在您註冊公有用戶端時支援的範圍。

#### 註冊公有用戶端時，IAM Identity Center OIDC 服務支援的存取範圍
<a name="supported-access-scopes"></a>


****  

| Scope (範圍) | Description | 支援的服務 | 
| --- | --- | --- | 
| sso:account:access | 存取 IAM Identity Center 受管帳戶和許可集。 | IAM Identity Center | 
| codewhisperer:analysis | 啟用存取 Kiro 程式碼分析。 | AWS 建構家 ID 和 IAM Identity Center | 
| codewhisperer:completions | 啟用存取 Kiro 內嵌程式碼建議。 | AWS 建構家 ID 和 IAM Identity Center | 
| codewhisperer:conversations | 啟用存取 Kiro 聊天。 | AWS 建構家 ID 和 IAM Identity Center | 
| codewhisperer:taskassist | 啟用存取 Kiro Agent 以進行軟體開發。 | AWS 建構家 ID 和 IAM Identity Center | 
| codewhisperer:transformations | 啟用存取 Kiro Agent 以進行程式碼轉換。 | AWS 建構家 ID 和 IAM Identity Center | 
| codecatalyst:read\$1write | 讀取和寫入 Amazon CodeCatalyst 資源，允許存取所有現有的資源。 | AWS 建構家 ID 和 IAM Identity Center | 
| verified\$1access:application:connect | 啟用 AWS Verified Access | AWS Verified Access | 
| redshift:connect | 連線至 Amazon Redshift | Amazon Redshift | 
| datazone:domain:access | 存取 DataZone 網域執行角色 | Amazon DataZone | 
| nosqlworkbench:datamodeladviser | 建立和讀取資料模型 | NoSQL Workbench | 
| transform:read\$1write | 啟用對 AWS Transform Agent 的存取權以進行程式碼轉換 | AWS 轉換 | 