

 適用於 .NET 的 AWS SDK V3 已進入維護模式。

我們建議您遷移至 [適用於 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。如需如何遷移的其他詳細資訊和資訊，請參閱我們的[維護模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

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

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

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

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

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

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

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

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

1. [SessionAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSessionAWSCredentials.html) 是從 `AWS_ACCESS_KEY_ID`、 `AWS_SECRET_ACCESS_KEY`和 `AWS_SESSION_TOKEN`環境變數建立的，如果它們都是非空的。

1.  從 `AWS_ACCESS_KEY_ID`和 `AWS_SECRET_ACCESS_KEY` 環境變數建立的 [BasicAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TBasicAWSCredentials.html)，如果兩者都是非空的。

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 登入資料檔案格式的檔案中。

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

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


****  

| AWSProfilesLocation | 設定檔解析行為 | 
| --- | --- | 
|  null (未設定) 或為空  |  如果平台支援 SDK Store，請搜尋 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 聯合服務 (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/v3/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`類別通常是服務主要命名空間的一部分。範例包括：Amazon.[AmazonCloudDirectoryConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/TCloudDirectoryConfig.html)中的 AmazonCloudDirectoryConfig 和 Amazon.GameLift 命名空間中的 [AmazonGameLiftConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/TGameLiftConfig.html)[。 GameLift](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/NGameLift.html) [CloudDirectory](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/NCloudDirectory.html) 

例如，對於 [Amazon S3](https://docs.aws.amazon.com/sdkfornet/v3/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`，但這些屬性都已停用。