

のバージョン 4 (V4) AWS SDK for .NET がリリースされました。

重要な変更とアプリケーションの移行については、[「移行トピック](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)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用したシングルサインオン AWS SDK for .NET
<a name="sso"></a>

AWS IAM アイデンティティセンター は、すべての AWS アカウント およびクラウドアプリケーションへの SSO アクセスを一元管理することを容易にするクラウドベースのシングルサインオン (SSO) サービスです。詳細については、[IAM Identity Center ユーザーガイド](https://docs.aws.amazon.com/singlesignon/latest/userguide/)を参照してください。

SDK が IAM Identity Centerとどのように相互作用するのかがよくわからない場合は、以下の情報を参照してください。

## 高レベルインタラクションステップ
<a name="w2aac15b7b7b1"></a>

高レベルでは、SDK は次のパターンと同様の方法で IAM Identity Centerと相互作用します。

1. IAM Identity Centerは通常 [IAM Identity Centerコンソール](https://console.aws.amazon.com/singlesignon)を使用して設定され、SSO ユーザーは参加するよう招待されます。

1. ユーザーのコンピュータの共有ファイルが AWS `config`SSO 情報で更新されます。

1. ユーザーは IAM Identity Center を通じてサインインし、設定された AWS Identity and Access Management (IAM) アクセス許可の短期認証情報が与えられます。このサインインは、 などの非 SDK ツールを通じて開始することも AWS CLI、.NET アプリケーションを通じてプログラムで開始することもできます。

1. ユーザーは作業を続行します。SSO を使用している他のアプリケーションを実行する場合、アプリケーションを開くために再度サインインする必要はありません。

このトピックの残りの部分では、設定と AWS IAM アイデンティティセンターの使用に関する参考情報を提供します。[による認証 AWS](creds-idc.md)での基本的な SSO 設定よりも補足的な情報やより高度な情報を提供します。SSO を初めて使用する場合は AWS、まずそのトピックで基本的な情報を確認し、次に以下のチュートリアルで SSO の実際の動作を確認することをお勧めします。
+ [チュートリアル: .NET アプリケーションのみ](sso-tutorial-app-only.md)
+ [チュートリアル: AWS CLI および .NET アプリケーション](sso-tutorial-cli-and-app.md)

このトピックには、次のセクションが含まれています。
+ [前提条件](#sso-prereq)
+ [SSO プロファイルのセットアップ](#sso-profiles)
+ [SSO トークンの生成と使用](#sso-generate-use-token-overview)
+ [追加リソース](#sso-resources)
+ [チュートリアル](#sso-tutorial-links)

## 前提条件
<a name="sso-prereq"></a>

IAM Identity Center を使用する前に、ID ソースの選択や関連する AWS アカウント およびアプリケーションの設定など、特定のタスクを実行する必要があります。詳細については、以下を参照してください。
+ IAM Identity Center の設定の詳細については、「I*AM Identigy Center ユーザーガイド*」の「[Getting Started](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」 (使用開始) を参照してください。
+ 具体的なタスクの例については、このトピックの最後にあるチュートリアルのリストを参照してください。ただし、チュートリアルを試す前に、このトピックの情報を必ず確認してください。

## SSO プロファイルのセットアップ
<a name="sso-profiles"></a>

関連する で IAM Identity Center [を設定](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)したら AWS アカウント、SSO の名前付きプロファイルをユーザーの共有 AWS `config`ファイルに追加する必要があります。このプロファイルは、[AWS アクセス ポータル](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html)**に接続するために使用され、ユーザーに対して構成された IAM 権限の短期認証情報を返します。

共有 `config` ファイルの名前は通常、Windows では `%USERPROFILE%\.aws\config`、Linux および macOS では `~/.aws/config` です。任意のテキストエディタを使用して SSO 用の新しいプロファイルを追加できます。または、 `aws configure sso` コマンドを使用できます。このコマンドの詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[IAM Identity Center を使用するための AWS CLI の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)」を参照してください。

新しいプロファイルは、次のようになります。

```
[profile {{my-sso-profile}}]
sso_start_url = {{https://my-sso-portal.awsapps.com/start}}
sso_region = {{us-west-2}}
sso_account_id = {{123456789012}}
sso_role_name = {{SSOReadOnlyRole}}
```

新しいプロファイルの設定は以下で定義されています。最初の 2 つの設定は、 AWS アクセスポータルを定義します。他の 2 つの設定はペアになっており、これらを組み合わせてユーザーに設定された権限を定義します。4つの設定すべてが必須です。

**`sso_start_url`**  
組織の[AWS アクセスポータル](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html)を指す URL この値を確認するには、[IAM Identity Center コンソール](https://console.aws.amazon.com/singlesignon)を開いて、**[設定]**を選択し、**[ポータル URL]** を探します。

**`sso_region`**  
アクセスポータルホスト AWS リージョン を含む 。これは IAM Identity Centerを有効にしたときに選択されたリージョンです。他のタスクに使用するリージョンとは異なる場合があります。  
 AWS リージョン とそのコードの完全なリストについては、『』の[「リージョンエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)」を参照してください*Amazon Web Services 全般のリファレンス*。

**`sso_account_id`**  
 AWS Organizations サービスを通じて AWS アカウント 追加された の ID。使用可能なアカウントのリストを確認するには、[IAM Identity Center コンソール](https://console.aws.amazon.com/singlesignon) に移動して **AWS アカウント**ページを開きます。この設定で選択するアカウント ID は、次に示す `sso_role_name` 設定に指定する予定の値に対応します。

**`sso_role_name`**  
IAM Identity Centerの権限セットの名前。この権限セットは、IAM Identity Center を通じてユーザーに付与される権限を定義します。  
以下の手順は、この設定の値を確認する方法の 1 つです。  

1. [IAM Identity Centerコンソール](https://console.aws.amazon.com/singlesignon)に移動し、**AWS アカウント**ページを開きます。

1. 詳細を表示するアカウントを選択します。選択するアカウントは、SSO 権限を付与したい SSO ユーザーまたはグループを含むアカウントになります。

1. アカウントに割り当てられているユーザーとグループのリストを見て、対象のユーザーまたはグループを探します。`sso_role_name`設定で指定する権限セットは、このユーザーまたはグループに関連付けられている権限セットの 1 つです。
この設定の値を指定するときは、Amazon リソースネーム (ARN) ではなく、権限セットの名前を使用してください。  
権限セットには IAM ポリシーとカスタムアクセス権限ポリシーがアタッチされています。詳細については、「* IAM Identity Center ユーザーガイド*」の「[権限セット](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsets.html)」を参照してください。

## SSO トークンの生成と使用
<a name="sso-generate-use-token-overview"></a>

SSO を使用するには、ユーザーはまず一時トークンを生成してから、そのトークンを使用して適切な AWS アプリケーションとリソースにアクセスする必要があります。.NET アプリケーションでは、次の方法を使用してこれらの一時トークンを生成して使用できます。
+ 必要に応じて最初にトークンを生成し、そのトークンを使用する.NET アプリケーションを作成します。
+ を使用してトークンを生成し AWS CLI 、そのトークンを .NET アプリケーションで使用します。

これらの方法については、以下のセクションで説明し、[チュートリアル](#sso-tutorial-links)で実演しています。

**重要**  
SSO 解決が機能するには、アプリケーションが次の NuGet パッケージを参照する必要があります。  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
これらのパッケージを参照しないと、*ランタイム*例外が発生します。

### .NETアプリケーションのみ
<a name="sso-generate-use-token-app-only-summary"></a>

このセクションでは、必要に応じて一時的な SSO トークンを生成し、そのトークンを使用する .NET アプリケーションを作成する方法を説明します。このプロセスの詳細なチュートリアルについては、[.NET アプリケーションのみを使用する SSO のチュートリアル](sso-tutorial-app-only.md)を参照してください。

#### SSO トークンをプログラムで生成して使用する。
<a name="sso-generate-token-prog"></a>

の使用に加えて AWS CLI、SSO トークンをプログラムで生成することもできます。

そのために、アプリケーションは SSO プロファイル用の[https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAWSCredentials.html)オブジェクトを作成します。このオブジェクトは、一時的な認証情報があればそれをロードします。次に、アプリケーションはその`AWSCredentials`オブジェクトを[https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentials.html)オブジェクトにキャストし、必要に応じてユーザーにサインイン情報の入力を求めるコールバックメソッドなど、いくつかの [Options](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentialsOptions.html) プロパティを設定する必要があります。

次のコードスニペットは、このメソッドを示しています。

**重要**  
SSO 解決が機能するには、アプリケーションが次の NuGet パッケージを参照する必要があります。  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
これらのパッケージを参照しないと、*ランタイム*例外が発生します。

```
static AWSCredentials LoadSsoCredentials()
{
    var chain = new CredentialProfileStoreChain();
    if (!chain.TryGetAWSCredentials("{{my-sso-profile}}", out var credentials))
        throw new Exception("Failed to find the {{my-sso-profile}} profile");

    var ssoCredentials = credentials as SSOAWSCredentials;

    ssoCredentials.Options.ClientName = "Example-SSO-App";
    ssoCredentials.Options.SsoVerificationCallback = args =>
    {
        // Launch a browser window that prompts the SSO user to complete an SSO sign-in.
        // This method is only invoked if the session doesn't already have a valid SSO token.
        // NOTE: Process.Start might not support launching a browser on macOS or Linux. If not,
        //       use an appropriate mechanism on those systems instead.
        Process.Start(new ProcessStartInfo
        {
            FileName = args.VerificationUriComplete,
            UseShellExecute = true
        });
    };
    ssoCredentials.Options.SupportsGettingNewToken = true;

    return ssoCredentials;
}
```

適切な SSO トークンがない場合は、既定のブラウザーウィンドウが起動し、適切なサインインページが開きます。たとえば、IAM Identity Center を **ID ソース**として使用している場合、ユーザーには次のようなサインインページが表示されます。

![AWS IAM アイデンティティセンター サインインページ。](http://docs.aws.amazon.com/ja_jp/sdk-for-net/v4/developer-guide/images/SSO-login.png)


**注記**  
`SSOAWSCredentials.Options.ClientName`に入力するテキスト文字列には、スペースを含めることはできません。文字列にスペースが含まれていると、*ランタイム*例外が発生します。

[.NET アプリケーションのみを使用する SSO のチュートリアル](sso-tutorial-app-only.md)

### AWS CLI および .NET アプリケーション
<a name="sso-generate-use-token-cli-and-app-summary"></a>

このセクションでは、 を使用して一時的な SSO トークンを生成する方法と AWS CLI、そのトークンをアプリケーションで使用する方法について説明します。このプロセスの詳細なチュートリアルについては、[AWS CLI および .NET アプリケーションを使用した SSO のチュートリアル](sso-tutorial-cli-and-app.md)を参照してください。

#### を使用して SSO トークンを生成する AWS CLI
<a name="sso-generate-token-cli"></a>

一時的な SSO トークンをプログラムで生成するだけでなく、 AWS CLI を使用してトークンを生成します。次の情報は、その方法を示しています。

[前のセクション](#sso-profiles)で説明したように、ユーザは SSO 対応プロファイルを作成したら、 AWS CLIから`aws sso login`コマンドを実行します。SSO 対応プロファイルの名前には必ず`--profile`パラメータを含める必要があります。これを次の例で示します:

```
aws sso login --profile {{my-sso-profile}}
```

現在のトークンの有効期限が切れた後に新しい一時トークンを生成したい場合は、同じコマンドをもう一度実行できます。

#### 生成された SSO トークンを.NET アプリケーションで使用します。
<a name="sso-use-profile-dotnet"></a>

次の情報は、すでに生成されている一時トークンの使用方法を示しています。

**重要**  
SSO 解決が機能するには、アプリケーションが次の NuGet パッケージを参照する必要があります。  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
これらのパッケージを参照しないと、*ランタイム*例外が発生します。

アプリケーションが SSO プロファイル用の[https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAWSCredentials.html)オブジェクトを作成し、 AWS CLIによって以前に生成された一時的な認証情報が読み込まれます。これは[アプリケーションでの認証情報とプロファイルへのアクセス](creds-locate.md)に示した方法と似ており、形式は次のとおりです。

```
static AWSCredentials LoadSsoCredentials()
{
    var chain = new CredentialProfileStoreChain();
    if (!chain.TryGetAWSCredentials("{{my-sso-profile}}", out var credentials))
        throw new Exception("Failed to find the {{my-sso-profile}} profile");

    return credentials;
}
```

その後、`AWSCredentials`オブジェクトはサービスクライアントのコンストラクターに渡されます。例:

```
var S3Client_SSO = new AmazonS3Client(LoadSsoCredentials());
```

**注記**  
アプリケーションが SSO 用の`[default]`プロファイルを使用するように構築されている場合は、`AWSCredentials`を使用して一時的な認証情報を読み込む必要はありません。この場合、アプリケーションは`var client = new AmazonS3Client();`「」のようなパラメータなしで AWS サービスクライアントを作成できます。

[AWS CLI および .NET アプリケーションを使用した SSO のチュートリアル](sso-tutorial-cli-and-app.md)

## 追加リソース
<a name="sso-resources"></a>

その他のヘルプについては、以下の資料を参照してください。
+ [IAM Identity Centerとは何ですか?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
+ [IAM Identity Center を使用する AWS CLI ように を設定する](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html#sso-configure-profile)
+ [での IAM Identity Center 認証情報の使用 AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/sso-credentials.html)

## チュートリアル
<a name="sso-tutorial-links"></a>

**Topics**
+ [前提条件](#sso-prereq)
+ [SSO プロファイルのセットアップ](#sso-profiles)
+ [SSO トークンの生成と使用](#sso-generate-use-token-overview)
+ [追加リソース](#sso-resources)
+ [チュートリアル](#sso-tutorial-links)
+ [チュートリアル: .NET アプリケーションのみ](sso-tutorial-app-only.md)
+ [チュートリアル: AWS CLI および .NET アプリケーション](sso-tutorial-cli-and-app.md)