

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

# 使用 Web 身分或 OpenID Connect 擔任角色以驗證 AWS SDKs和工具
<a name="access-assume-role-web"></a>

假設角色涉及使用一組臨時安全登入資料來存取 AWS 您可能無法存取的資源。這些臨時登入資料由存取金鑰 ID、私密存取金鑰和安全字符組成。若要進一步了解 AWS Security Token Service (AWS STS) API 請求，請參閱 *AWS Security Token Service API 參考*中的[動作](https://docs.aws.amazon.com/STS/latest/APIReference/API_Operations.html)。

若要設定軟體開發套件或工具以擔任角色，您必須先建立或識別要擔任的特定*角色*。IAM 角色由角色 Amazon Resource Name ([ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)) 唯一識別。角色會與其他實體建立信任關係。使用 角色的信任實體可能是 Web 身分提供者或 OpenID Connect(OIDC) 或 SAML 聯合。若要進一步了解 IAM 角色，請參閱《*IAM 使用者指南*》中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

在軟體開發套件中設定 IAM 角色之後，如果該角色設定為信任您的身分提供者，您可以進一步設定軟體開發套件擔任該角色，以取得臨時 AWS 登入資料。

**注意**  
 AWS 最佳實務是盡可能使用區域端點並設定您的 [AWS 區域](feature-region.md)。

## 與 Web 身分或 OpenID Connect 聯合
<a name="webidentity"></a>

您可以使用公有身分提供者的 JSON Web Token (JWTs)，例如 Login With Amazon、Facebook、Google，以使用 取得臨時 AWS 登入資料`AssumeRoleWithWebIdentity`。視其使用方式而定，這些 JWTs可能會稱為 ID 字符或存取字符。您也可以使用從與 OIDC 探索通訊協定相容的身分提供者 (IdPs) 發行的 JWTs，例如 EntraId 或 PingFederate。

如果您使用的是 Amazon Elastic Kubernetes Service，此功能可讓您為 Amazon EKS 叢集中的每個服務帳戶指定不同的 IAM 角色。此 Kubernetes 功能會將 JWTs 分發到您的 Pod，然後由此登入資料提供者用來取得臨時 AWS 登入資料。如需此 Amazon EKS 組態的詳細資訊，請參閱《**Amazon EKS 使用者指南*》中的*[服務帳戶的 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)。不過，對於更簡單的選項，如果您的 [SDK 支援](feature-container-credentials.md#feature-container-credentials-sdk-compat)，建議您改用 [Amazon EKS Pod 身分](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)。

### 步驟 1：設定身分提供者和 IAM 角色
<a name="webidentity_step1"></a>

若要使用外部 IdP 設定聯合，請使用 IAM 身分提供者來通知 AWS 外部 IdP 及其組態。這會在您的 AWS 帳戶 和外部 IdP 之間建立*信任*。設定 SDK 以使用 JSON Web Token (JWT) 進行身分驗證之前，您必須先設定身分提供者 (IdP) 和用來存取它的 IAM 角色。若要設定這些項目，請參閱《*IAM 使用者指南*》中的[為 Web 身分或 OpenID Connect Federation （主控台） 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)。

### 步驟 2：設定 SDK 或工具
<a name="webidentity_step2"></a>

設定 SDK 或工具以使用來自 的 JSON Web Token (JWT) AWS STS 進行身分驗證。

當您在設定檔中指定此項目時，軟體開發套件或工具會自動為您進行對應的 AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API 呼叫。若要使用 Web 聯合身分擷取和使用臨時憑證，請在共用 AWS `config`檔案中指定下列組態值。如需這些設定的詳細資訊，請參閱 [擔任角色登入資料提供者設定](feature-assume-role-credentials.md#feature-assume-role-credentials-settings)一節。
+ `role_arn` - 來自您在步驟 1 中建立的 IAM 角色
+ `web_identity_token_file` - 從外部 IdP
+ (選用) `duration_seconds`
+ (選用) `role_session_name` 

以下是使用 Web 身分擔任角色的共用`config`檔案組態範例：

```
[profile {{web-identity}}]
role_arn=arn:aws:iam::{{123456789012}}:role/{{my-role-name}}
web_identity_token_file={{/path/to/a/token}}
```

**注意**  
對於行動應用程式，請考慮使用 Amazon Cognito。Amazon Cognito 充當身分中介裝置，並為您執行大部分聯合工作。不過，Amazon Cognito 身分提供者不包含在SDKs和工具核心程式庫中，就像其他身分提供者一樣。若要存取 Amazon Cognito API，請在 SDK 或工具的建置或程式庫中包含 Amazon Cognito 服務用戶端。如需使用 AWS SDKs請參閱《*Amazon Cognito 開發人員指南*》中的[程式碼範例](https://docs.aws.amazon.com/cognito/latest/developerguide/service_code_examples.html)。

如需所有擔任角色登入資料提供者設定的詳細資訊，請參閱本指南[擔任角色登入資料提供者](feature-assume-role-credentials.md)中的 。