

 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/)を参照してください。

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

# AWS SDK for .NET でのシングルサインオン (SSO)
<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="w2aac13b7b7b1"></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) 権限の短期認証情報が与えられます。このサインインは、AWS CLI のような非 SDK ツールを使って開始することも、.NET アプリケーションを通じてプログラム的に開始することもできます。

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

このトピックの残りの部分では、設定とAWS IAM アイデンティティセンター の使用に関する参考情報を提供します。[SDK 認証の設定](creds-idc.md)での基本的な SSO 設定よりも補足的な情報やより高度な情報を提供します。AWSでSSO を初めて使用する場合は、まずそのトピックで基本的な情報を確認し、次に次のチュートリアルで 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>

関連するAWS アカウント で、IAM Identity Center を [設定](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) したら、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 リージョン の完全なリストとそれらのコードについては、Amazon Web Services 全般のリファレンス** の「[リージョナルエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)」を参照してください。

**`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/v3/apidocs/items/Runtime/TAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html)オブジェクトを作成します。このオブジェクトは、一時的な認証情報があればそれをロードします。次に、アプリケーションはその`AWSCredentials`オブジェクトを[https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSSOAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSSOAWSCredentials.html)オブジェクトにキャストし、必要に応じてユーザーにサインイン情報の入力を求めるコールバックメソッドなど、いくつかの [Options](https://docs.aws.amazon.com/sdkfornet/v3/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
        });
    };

    return ssoCredentials;
}
```

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

![\[AWS IAM アイデンティティセンター サインインページ\]](http://docs.aws.amazon.com/ja_jp/sdk-for-net/v3/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>

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

#### AWS CLIを使用して SSO トークンを生成します。
<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/v3/apidocs/items/Runtime/TAWSCredentials.html](https://docs.aws.amazon.com/sdkfornet/v3/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)