

Version 4 (V4) von AWS SDK für .NET wurde veröffentlicht\$1

Informationen zu wichtigen Änderungen und zur Migration Ihrer Anwendungen finden Sie im [Migrationsthema](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)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Tutorial für SSO mit den AWS CLI und .NET-Anwendungen
<a name="sso-tutorial-cli-and-app"></a>

Dieses Tutorial zeigt Ihnen, wie Sie SSO für eine grundlegende .NET-Anwendung und einen SSO-Testbenutzer aktivieren. Es verwendet das AWS CLI , um ein temporäres SSO-Token zu generieren, anstatt [es programmgesteuert zu generieren](sso-tutorial-app-only.md).

Dieses Tutorial zeigt Ihnen einen kleinen Teil der SSO-Funktionalität in der. AWS SDK für .NET Vollständige Informationen zur Verwendung von IAM Identity Center mit dem AWS SDK für .NET finden Sie im Thema mit [Hintergrundinformationen](sso.md). In diesem Thema finden Sie insbesondere die allgemeine Beschreibung für dieses Szenario im Unterabschnitt. [AWS CLI und .NET-Anwendung](sso.md#sso-generate-use-token-cli-and-app-summary)

**Anmerkung**  
Einige der Schritte in diesem Tutorial helfen Ihnen bei der Konfiguration von Diensten wie AWS Organizations IAM Identity Center. Wenn Sie diese Konfigurationen bereits durchgeführt haben oder wenn Sie nur an dem Code interessiert sind, können Sie zum Abschnitt mit dem [Beispielcode](#sso-tutorial-cli-and-app-code) springen.

## Voraussetzungen
<a name="sso-tutorial-cli-and-app-prereq"></a>
+ Konfigurieren Sie Ihre Entwicklungsumgebung, falls Sie dies noch nicht getan haben. Dies wird in Abschnitten wie [Installation und Konfiguration Ihrer Toolchain für die AWS SDK für .NET](net-dg-dev-env.md) und beschrieben[Erste Schritte](net-dg-config.md).
+ Identifizieren oder erstellen Sie mindestens eine AWS-Konto , die Sie zum Testen von SSO verwenden können. Für die Zwecke dieses Tutorials wird dieses Konto als *Test AWS-Konto* - oder einfach als *Testkonto* bezeichnet.
+ Identifizieren Sie einen *SSO-Benutzer*, der SSO für Sie testen kann. Dies ist eine Person, die SSO und die von Ihnen erstellten Basisanwendungen verwenden wird. Für dieses Tutorial könnten Sie (der Entwickler) oder eine andere Person diese Person sein. Wir empfehlen außerdem ein Setup, bei dem der SSO-Benutzer auf einem Computer arbeitet, der sich nicht in Ihrer Entwicklungsumgebung befindet. Dies ist jedoch nicht unbedingt erforderlich.
+ Auf dem Computer des SSO-Benutzers muss ein.NET-Framework installiert sein, das mit dem Framework kompatibel ist, mit dem Sie Ihre Entwicklungsumgebung eingerichtet haben.
+ Stellen Sie sicher, dass AWS CLI Version 2 auf dem Computer des SSO-Benutzers [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) ist. Sie können dies überprüfen, indem Sie es `aws --version` in einer Befehlszeile oder einem Terminal ausführen.

## Richten Sie ein AWS
<a name="sso-tutorial-cli-and-app-setup-aws"></a>

In diesem Abschnitt erfahren Sie, wie Sie verschiedene AWS Dienste für dieses Tutorial einrichten.

Um dieses Setup durchzuführen, melden Sie sich zunächst AWS-Konto als Administrator beim Test an. Führen Sie dann die folgenden Schritte aus:

### Amazon S3
<a name="w2aac15b7c41c15b3b5"></a>

Gehen Sie zur [Amazon S3 S3-Konsole](https://console.aws.amazon.com/s3/home) und fügen Sie einige harmlose Buckets hinzu. Später in diesem Tutorial wird der SSO-Benutzer eine Liste dieser Buckets abrufen.

### AWS ICH BIN
<a name="w2aac15b7c41c15b3b7"></a>

Gehen Sie zur [IAM-Konsole](https://console.aws.amazon.com/iam/home#/users) und fügen Sie einige IAM-Benutzer hinzu. Wenn Sie den IAM-Benutzern Berechtigungen erteilen, beschränken Sie die Berechtigungen auf einige harmlose Nur-Lese-Berechtigungen. Später in diesem Tutorial wird der SSO-Benutzer eine Liste dieser IAM-Benutzer abrufen.

### AWS Organizations
<a name="w2aac15b7c41c15b3b9"></a>

Gehen Sie zur [AWS Organizations Konsole](https://console.aws.amazon.com/organizations/) und aktivieren Sie Organizations. Weitere Informationen finden Sie unter [Erstellen einer Organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html) im [Benutzerhandbuch für AWS Organizations .](https://docs.aws.amazon.com/organizations/latest/userguide/)

Diese Aktion fügt der Organisation AWS-Konto den Test als *Verwaltungskonto* hinzu. Wenn Sie über zusätzliche Testkonten verfügen, können Sie sie einladen, der Organisation beizutreten. Für dieses Tutorial ist dies jedoch nicht erforderlich.

### IAM Identity Center
<a name="w2aac15b7c41c15b3c11"></a>

Gehen Sie zur [IAM Identity Center-Konsole](https://console.aws.amazon.com/singlesignon/) und aktivieren Sie SSO. Führen Sie bei Bedarf eine E-Mail-Überprüfung durch. Weitere Informationen finden Sie unter [Aktivieren von IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/step1.html) im [IAM Identity Center-Benutzerhandbuch](https://docs.aws.amazon.com/singlesignon/latest/userguide/).

Führen Sie dann die folgende Konfiguration durch.

#### Konfigurieren Sie IAM Identity Center
<a name="w2aac15b7c41c15b3c11b7b1"></a>

1. Gehen Sie zur Seite **„Einstellungen“**. Suchen Sie nach der **„Access-Portal-URL“** und notieren Sie den Wert für die spätere Verwendung in der `sso_start_url` Einstellung.

1. Suchen Sie im Banner von nach dem Wert AWS-Managementkonsole AWS-Region , der bei der Aktivierung von SSO festgelegt wurde. Dies ist das Dropdownmenü links neben der AWS-Konto ID. Notieren Sie sich den Regionalcode für die spätere Verwendung in der `sso_region` Einstellung. Dieser Code wird ähnlich sein wie`us-east-1`.

1. Erstellen Sie einen SSO-Benutzer wie folgt:

   1. Gehen Sie zur **Benutzerseite**.

   1. Wählen **Sie Benutzer hinzufügen** und geben Sie den **Benutzernamen**, die **E-Mail-Adresse**, den **Vornamen** und den **Nachnamen des** Benutzers ein. Wählen Sie anschließend **Weiter**.

   1. Wählen Sie auf der Seite für Gruppen die Option **Weiter** aus, überprüfen Sie die Informationen und wählen Sie **Benutzer hinzufügen**.

1. Erstellen Sie eine Gruppe wie folgt:

   1. Gehen Sie zur Seite **Gruppen**.

   1. Wählen Sie **Gruppe erstellen** und geben Sie den **Gruppennamen und die **Beschreibung** der Gruppe** ein.

   1. Wählen **Sie im Abschnitt Benutzer zur Gruppe hinzufügen** den SSO-Testbenutzer aus, den Sie zuvor erstellt haben. Wählen Sie dann **Gruppe erstellen aus.**

1. Erstellen Sie einen Berechtigungssatz wie folgt:

   1. Gehen Sie zur Seite „**Berechtigungssätze**“ und wählen Sie „**Berechtigungssatz erstellen“**.

   1. Wählen Sie unter **Typ des Berechtigungssatzes** die Option **Benutzerdefinierter Berechtigungssatz** und **dann Weiter** aus.

   1. Öffnen Sie **die Inline-Richtlinie** und geben Sie die folgende Richtlinie ein:

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": [
                      "s3:ListAllMyBuckets",
                      "iam:ListUsers"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. Geben Sie `SSOReadOnlyRole` für dieses Tutorial den **Namen des Berechtigungssatzes** ein. Fügen Sie bei **Bedarf eine Beschreibung** hinzu und wählen Sie dann **Weiter**.

   1. Überprüfen Sie die Informationen und wählen Sie dann **Erstellen** aus.

   1. Notieren Sie sich den Namen des Berechtigungssatzes für die spätere Verwendung in der `sso_role_name` Einstellung.

1. Gehen Sie zur **AWS Kontoseite** und wählen Sie das AWS Konto aus, das Sie der Organisation zuvor hinzugefügt haben.

1. Suchen Sie im Abschnitt „**Übersicht**“ auf dieser Seite nach der **Konto-ID** und notieren Sie sie für die spätere Verwendung in der `sso_account_id` Einstellung.

1. Wählen Sie die Registerkarte **Benutzer und Gruppen** und dann **Benutzer oder Gruppen zuweisen**.

1. Wählen Sie auf der Seite **Benutzer und Gruppen zuweisen** die Registerkarte **Gruppen**, wählen Sie die Gruppe aus, die Sie zuvor erstellt haben, und klicken Sie auf **Weiter**.

1. Wählen Sie den zuvor erstellten Berechtigungssatz aus, klicken Sie auf **Weiter** und anschließend auf **Absenden**. Die Konfiguration dauert einige Augenblicke.

## Erstellen Sie Beispielanwendungen
<a name="sso-tutorial-cli-and-app-code"></a>

Erstellen Sie die folgenden Anwendungen. Sie werden auf dem Computer des SSO-Benutzers ausgeführt.

### Amazon S3 S3-Buckets auflisten
<a name="sso-tutorial-cli-and-app-code-s3"></a>

 NuGet Schließt Pakete `AWSSDK.SSO` und `AWSSDK.SSOOIDC` zusätzlich zu `AWSSDK.S3` und `AWSSDK.SecurityToken` ein.

```
using System;
using System.Threading.Tasks;

// NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
using Amazon.Runtime;
using Amazon.Runtime.CredentialManagement;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace SSOExample.S3.CLI_login
{
    class Program
    {
        // Requirements:
        // - An SSO profile in the SSO user's shared config file.
        // - An active SSO Token.
        //    If an active SSO token isn't available, the SSO user should do the following:
        //    In a terminal, the SSO user must call "aws sso login --profile my-sso-profile".

        // Class members.
        private static string profile = "my-sso-profile";
        static async Task Main(string[] args)
        {
            // Get SSO credentials from the information in the shared config file.
            var ssoCreds = LoadSsoCredentials(profile);

            // Display the caller's identity.
            var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
            Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");

            // Display a list of the account's S3 buckets.
            // The S3 client is created using the SSO credentials obtained earlier.
            var s3Client = new AmazonS3Client(ssoCreds);
            Console.WriteLine("\nGetting a list of your buckets...");
            var listResponse = await s3Client.ListBucketsAsync();
            Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}");
            foreach (S3Bucket b in listResponse.Buckets)
            {
                Console.WriteLine(b.BucketName);
            }
            Console.WriteLine();
        }

        // Method to get SSO credentials from the information in the shared config file.
        static AWSCredentials LoadSsoCredentials(string profile)
        {
            var chain = new CredentialProfileStoreChain();
            if (!chain.TryGetAWSCredentials(profile, out var credentials))
                throw new Exception($"Failed to find the {profile} profile");
            return credentials;
        }
    }

    // Class to read the caller's identity.
    public static class Extensions
    {
        public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
        {
            var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
            return response.Arn;
        }
    }
}
```

### IAM-Benutzer auflisten
<a name="sso-tutorial-cli-and-app-code-iam"></a>

 NuGet Schließt Pakete `AWSSDK.SSO` und `AWSSDK.SSOOIDC` zusätzlich zu `AWSSDK.IdentityManagement` und `AWSSDK.SecurityToken` ein.

```
using System;
using System.Threading.Tasks;

// NuGet packages: AWSSDK.IdentityManagement, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
using Amazon.Runtime;
using Amazon.Runtime.CredentialManagement;
using Amazon.IdentityManagement;
using Amazon.IdentityManagement.Model;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace SSOExample.IAM.CLI_login
{
    class Program
    {
        // Requirements:
        // - An SSO profile in the SSO user's shared config file.
        // - An active SSO Token.
        //    If an active SSO token isn't available, the SSO user should do the following:
        //    In a terminal, the SSO user must call "aws sso login --profile my-sso-profile".

        // Class members.
        private static string profile = "my-sso-profile";
        static async Task Main(string[] args)
        {
            // Get SSO credentials from the information in the shared config file.
            var ssoCreds = LoadSsoCredentials(profile);

            // Display the caller's identity.
            var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
            Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");

            // Display a list of the account's IAM users.
            // The IAM client is created using the SSO credentials obtained earlier.
            var iamClient = new AmazonIdentityManagementServiceClient(ssoCreds);
            Console.WriteLine("\nGetting a list of IAM users...");
            var listResponse = await iamClient.ListUsersAsync();
            Console.WriteLine($"Number of IAM users: {listResponse.Users.Count}");
            foreach (User u in listResponse.Users)
            {
                Console.WriteLine(u.UserName);
            }
            Console.WriteLine();
        }

        // Method to get SSO credentials from the information in the shared config file.
        static AWSCredentials LoadSsoCredentials(string profile)
        {
            var chain = new CredentialProfileStoreChain();
            if (!chain.TryGetAWSCredentials(profile, out var credentials))
                throw new Exception($"Failed to find the {profile} profile");
            return credentials;
        }
    }

    // Class to read the caller's identity.
    public static class Extensions
    {
        public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
        {
            var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
            return response.Arn;
        }
    }
}
```

Diese Anwendungen zeigen nicht nur Listen von Amazon S3 S3-Buckets und IAM-Benutzern an, sondern zeigen auch den Benutzeridentitäts-ARN für das SSO-fähige Profil an, das in diesem Tutorial beschrieben wird`my-sso-profile`.

## Weisen Sie den SSO-Benutzer an
<a name="sso-tutorial-cli-and-app-user"></a>

Bitten Sie den SSO-Benutzer, seine E-Mails zu überprüfen und die SSO-Einladung anzunehmen. Sie werden aufgefordert, ein Passwort festzulegen. Es kann einige Minuten dauern, bis die Nachricht im Posteingang des SSO-Benutzers eingeht.

Geben Sie dem SSO-Benutzer die Anwendungen, die Sie zuvor erstellt haben.

Lassen Sie den SSO-Benutzer dann wie folgt vorgehen:

1. Wenn der Ordner, der die geteilte AWS `config` Datei enthält, nicht existiert, erstellen Sie ihn. Wenn der Ordner existiert und einen Unterordner namens hat`.sso`, löschen Sie diesen Unterordner.

   Der Speicherort dieses Ordners befindet sich normalerweise `%USERPROFILE%\.aws` in Windows sowie `~/.aws` unter Linux und macOS.

1. Erstellen Sie bei Bedarf eine gemeinsam genutzte AWS `config` Datei in diesem Ordner und fügen Sie ihr wie folgt ein Profil hinzu:

   ```
   [default]
   region = <default Region>
   
   [profile my-sso-profile]
   sso_start_url = <user portal URL recorded earlier>
   sso_region = <Region code recorded earlier>
   sso_account_id = <account ID recorded earlier>
   sso_role_name = SSOReadOnlyRole
   ```

1. Führen Sie die Amazon S3 S3-Anwendung aus. Eine Laufzeitausnahme wird angezeigt.

1. Führen Sie den folgenden AWS CLI Befehl aus:

   ```
   aws sso login --profile my-sso-profile
   ```

1. Melden Sie sich auf der daraufhin angezeigten Web-Anmeldeseite an. Verwenden Sie den Benutzernamen aus der Einladungsnachricht und das Passwort, das als Antwort auf die Nachricht erstellt wurde.

1. Führen Sie die Amazon S3 S3-Anwendung erneut aus. Die Anwendung zeigt jetzt die Liste der S3-Buckets an.

1. Führen Sie die IAM-Anwendung aus. Die Anwendung zeigt die Liste der IAM-Benutzer an. Dies gilt auch dann, wenn keine zweite Anmeldung durchgeführt wurde. Die IAM-Anwendung verwendet das temporäre Token, das zuvor erstellt wurde.

## Bereinigen
<a name="sso-tutorial-cli-and-app-cleanup"></a>

Wenn Sie die Ressourcen, die Sie in diesem Tutorial erstellt haben, nicht behalten möchten, bereinigen Sie sie. Dies können AWS Ressourcen oder Ressourcen in Ihrer Entwicklungsumgebung sein, z. B. Dateien und Ordner.