

第 4 版 (V4) 適用於 .NET 的 AWS SDK 已發行！

如需有關中斷變更和遷移應用程式的資訊，請參閱[遷移主題](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# 憑證和設定檔解析
<a name="creds-assign"></a>

會依特定順序 適用於 .NET 的 AWS SDK 搜尋登入資料，並使用目前應用程式的第一個可用集合。

**登入資料搜尋順序**

1. 在 AWS 服務用戶端上明確設定的登入資料，如中所述[在應用程式中存取登入資料和設定檔](creds-locate.md)。
**注意**  
該主題位於 [特殊考量](special-considerations.md)區段中，因為它不是指定憑證的偏好方法。

1. 如果這三個變數都有值，則從 `AWS_ACCESS_KEY_ID`、 `AWS_SECRET_ACCESS_KEY`和 `AWS_SESSION_TOKEN`環境變數建立的 [SessionAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSessionAWSCredentials.html)。

1.  如果兩個變數都有值，則從 `AWS_ACCESS_KEY_ID`和`AWS_SECRET_ACCESS_KEY`環境變數建立的 [BasicAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TBasicAWSCredentials.html)。

1. 如果兩個變數都有值，則從 `AWS_WEB_IDENTITY_TOKEN_FILE`和 `AWS_ROLE_ARN` 環境變數建立的 [AssumeRoleWithWebIdentityCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAssumeRoleWithWebIdentityCredentials.html)。

1. 登入資料設定檔，其名稱由 [AWSConfigs.AWSProfileName](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html#properties) 中的值指定。

1. 登入資料設定檔，名稱為 `AWS_PROFILE`環境變數指定的名稱。

1. `[default]` 登入資料設定檔。

1. [容器憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html)。

1. Amazon EC2 執行個體中繼資料。

如果您的應用程式在 Amazon EC2 執行個體上執行，例如在生產環境中，請使用 中所述的 IAM 角色[使用 IAM 角色授予存取權](net-dg-hosm.md)。否則，例如在發行前測試中，將您的登入資料存放在使用您 Web 應用程式可在伺服器上存取之 AWS 登入資料檔案格式的檔案中。

如需環境變數和登入資料設定檔的詳細資訊，請參閱 [AWS SDKs和工具參考指南](https://docs.aws.amazon.com/sdkref/latest/guide/)中的下列主題：[環境變數](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)、[環境變數清單](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#EVarSettings)，以及[共用組態和登入資料檔案](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。

## 設定檔解析
<a name="net-dg-config-creds-profile-resolution"></a>

使用兩種不同的憑證儲存機制，了解如何設定 適用於 .NET 的 AWS SDK 來使用它們非常重要。[AWSConfigs.AWSProfilesLocation](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 屬性會控制 如何 適用於 .NET 的 AWS SDK 尋找登入資料設定檔。


****  

| AWSProfilesLocation | 設定檔解析行為 | 
| --- | --- | 
|  null (未設定) 或為空  |  如果平台支援，請搜尋 SDK Store，然後在[預設位置](creds-file.md)搜尋共用 AWS 的登入資料檔案。如果設定檔不在這些位置，請搜尋 `~/.aws/config`(Linux 或 macOS) 或 `%USERPROFILE%\.aws\config`(Windows)。  | 
|   AWS 登入資料檔案格式的檔案路徑  |  *只* 搜尋指定的檔案中是否有特定名稱的設定檔。  | 

## 使用聯合使用者帳戶登入資料
<a name="net-dg-config-creds-saml"></a>

使用 適用於 .NET 的 AWS SDK ([AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core/) 3.1.6.0 版及更新版本） 的應用程式可以透過 Active Directory Federation Services (AD FS) 使用聯合使用者帳戶，透過安全聲明標記語言 (SAML) 存取 AWS 服務。

聯合身分存取權支援表示使用者可以使用 Active Directory 進行身分驗證。自動授與臨時登入資料給使用者。這些臨時登入資料在一小時內有效，會在您的應用程式叫用 AWS 服務時使用。開發套件會管理臨時登入資料。對於網域加入的使用者帳戶，如果您的應用程式呼叫過期，則會自動重新對使用者進行身分驗證和重新整理授與登入資料。（對於未加入網域的帳戶，系統會提示使用者在重新驗證之前輸入登入資料。)

若要在您的 .NET 應用程式中使用此支援，您必須先使用 PowerShell cmdlet 建立角色設定檔。若要了解如何操作，請參閱 [AWS Tools for Windows PowerShell 文件](https://docs.aws.amazon.com/powershell/latest/userguide/saml-pst.html)。

設定角色描述檔之後，請在應用程式中參考描述檔。有多種方法可以執行此操作，其中一個是使用 [AWSConfigs.AWSProfileName](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 屬性，就像使用其他登入資料描述檔一樣。

*AWS Security Token Service* 組件 ([AWSSDK.SecurityToken](https://www.nuget.org/packages/AWSSDK.SecurityToken/)) 提供 SAML 支援以取得 AWS 登入資料。若要使用聯合使用者帳戶登入資料，請確定您的應用程式可以使用此組件。

## 指定角色或臨時登入資料
<a name="net-dg-config-creds-assign-role"></a>

對於在 Amazon EC2 執行個體上執行的應用程式，管理登入資料的最安全方法是使用 IAM 角色，如中所述[使用 IAM 角色授予存取權](net-dg-hosm.md)。

對於您組織外部的使用者可使用軟體可執行檔的應用程式案例，我們建議您設計軟體以使用*臨時安全登入*資料。除了提供對 AWS 資源的限制存取之外，這些登入資料還可以在指定的一段時間後過期。如需臨時安全登入資料的詳細資訊，請參閱以下：
+  [臨時安全登入資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 
+  [Amazon Cognito 身分集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)

## 使用代理登入資料
<a name="net-dg-config-creds-proxy"></a>

如果您的軟體 AWS 透過代理與 通訊，您可以使用 服務`Config`類別的 `ProxyCredentials` 屬性來指定代理的登入資料。服務的`Config`類別通常是服務主要命名空間的一部分。範例包括：[AmazonCloudDirectoryConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudDirectory/TCloudDirectoryConfig.html)中的 [AmazonCloudDirectory](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudDirectory/NCloudDirectory.html) Config和 [AmazonGameLiftConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/GameLift/TGameLiftConfig.html)中的 [AmazonGameLiftConfig。](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/GameLift/NGameLift.html)

例如，對於 [Amazon S3](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html)，您可以使用類似以下的程式碼，其中 `SecurelyStoredUserName`和 `SecurelyStoredPassword`是 [NetworkCredential](https://learn.microsoft.com/en-us/dotnet/api/system.net.networkcredential) 物件中指定的代理使用者名稱和密碼。

```
AmazonS3Config config = new AmazonS3Config();
config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
```

**注意**  
舊版的開發套件使用 `ProxyUsername` 和 `ProxyPassword`，但這些屬性都已停用。