

 AWS SDK for .NET V3 がメンテナンスモードになりました。

[AWS SDK for .NET 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>

AWS SDK for .NET は定められた順序で認証情報を検索し、最初に利用できるセットを現在のアプリケーションで使用します。

**認証情報の検索順序**

1. [アプリケーションでの認証情報とプロファイルへのアクセス](creds-locate.md) での記載に従い、AWS サービスクライアントで明示的に設定されている認証情報。
**注記**  
このトピックは推奨される認証情報の指定方法ではないため、[特別な考慮事項](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. `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY` および `AWS_SESSION_TOKEN` 環境変数がすべて空でない場合に変数を使用して生成される [SessionAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSessionAWSCredentials.html)。

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 ロールを使用したアクセス権の付与](net-dg-hosm.md)」の説明に従って IAM ロールを使用します。それ以外の場合 (プレリリーステストなど) は、ウェブアプリケーションがサーバー上でアクセス可能な、AWS 認証情報ファイル形式を使用したファイルに認証情報を保存します。

## プロファイルの解決
<a name="net-dg-config-creds-profile-resolution"></a>

2 つの異なる認証情報ストレージメカニズムがあるため、それを使用するように AWS SDK for .NET を設定する方法を理解することが重要です。[AWSConfigs.AWSProfilesLocation](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) プロパティは、AWS SDK for .NET が認証情報プロファイルを検索する方法を制御します。


****  

| AWSProfilesLocation | プロファイルの解決動作 | 
| --- | --- | 
|  null (未設定) または空  |  プラットフォームでサポートされていれば SDK ストアを検索し、次に[デフォルトの場所](creds-file.md)にある共有 AWS 認証情報ファイルを検索します。プロファイルがいずれの場所にもない場合は、`~/.aws/config` (Linux または macOS) または `%USERPROFILE%\.aws\config` (Windows) を検索します。  | 
|  AWS 認証情報ファイル形式のファイルへのパス  |  指定されたファイル*のみ*を対象に、指定された名前のプロファイルを検索します。  | 

## フェデレーティッドユーザーアカウントの認証情報の使用
<a name="net-dg-config-creds-saml"></a>

AWS SDK for .NET ([AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core/) バージョン 3.1.6.0 以降) を使用するアプリケーションでは、Active Directory Federation Services (AD FS) を通じてフェデレーティッドユーザーアカウントを使用し、Security Assertion Markup Language (SAML) を使用することによって AWS サービスにアクセスできます。

フェデレーティッドアクセスサポートでは、ユーザーは Active Directory を使用して認証できます。一時的な認証情報は、自動的にユーザーに許可されます。これらの一時的な認証情報は 1 時間有効であり、アプリケーションで AWS サービスを呼び出す際に使用されます。一時的な認証情報の管理は SDK によって処理します。ドメイン結合されたユーザーアカウントでは、アプリケーションが呼び出しを行ったときに資格情報の有効期限が切れている場合に、そのユーザーは自動的に再認証され、新しい認証情報が付与されます (ドメイン結合されていないアカウントでは、ユーザーは再認証の前に認証情報の入力を求められます)。

このサポートを .NET アプリケーションで使用するには、まず PowerShell コマンドレットを使用してロールプロファイルをセットアップする必要があります。方法については、[AWS Tools for Windows PowerShell のドキュメント](https://docs.aws.amazon.com/powershell/latest/userguide/saml-pst.html)を参照してください。

ロールプロファイルを設定したら、アプリケーションでプロファイルを参照します。そのための方法はいくつかありますが、その 1 つとして [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/)) は、AWS 認証情報を取得するための SAML サポートを提供します。フェデレーティッドユーザーアカウントの認証情報を使用するには、アプリケーションでこのアセンブリが使用できることを確認してください。

## ロールまたは一時認証情報の指定
<a name="net-dg-config-creds-assign-role"></a>

Amazon EC2 インスタンスで実行されるアプリケーションの場合、認証情報を管理する最も安全な方法は、「[IAM ロールを使用したアクセス権の付与](net-dg-hosm.md)」での説明に従って IAM ロールを使用することです。

組織外部のユーザーに対してソフトウェア実行可能ファイルが利用可能になるアプリケーションシナリオでは、*一時的なセキュリティ認証情報*を使用するようにソフトウェアを設計することをお勧めします。これらの認証情報は、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.CloudDirectory](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/NCloudDirectory.html) 名前空間の [AmazonCloudDirectoryConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/TCloudDirectoryConfig.html) や [Amazon.GameLift](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/NGameLift.html) 名前空間の [AmazonGameLiftConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/TGameLiftConfig.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);
```

**注記**  
SDK の以前のバージョンでは `ProxyUsername` および `ProxyPassword` が使用されていましたが、これらのプロパティは非推奨になりました。