Tutorial für SSO mit ausschließlich.NET-Anwendungen - AWS SDK for .NET

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 ausschließlich.NET-Anwendungen

Dieses Tutorial zeigt Ihnen, wie Sie SSO für eine Basisanwendung und einen SSO-Testbenutzer aktivieren. Es konfiguriert die Anwendung so, dass ein temporäres SSO-Token programmgesteuert generiert wird, anstatt das zu verwenden. AWS CLI

Dieses Tutorial zeigt Ihnen einen kleinen Teil der SSO-Funktionalität in der. AWS SDK for .NET Vollständige Informationen zur Verwendung von IAM Identity Center mit dem AWS SDK for .NET finden Sie im Thema mit Hintergrundinformationen. In diesem Thema finden Sie insbesondere die allgemeine Beschreibung für dieses Szenario im Unterabschnitt. Ausschließlich.NET-Anwendung

Anmerkung

Einige der Schritte in diesem Tutorial helfen Ihnen bei der Konfiguration von Diensten wie AWS Organizations IAM Identity Center. Wenn Sie diese Konfiguration bereits durchgeführt haben oder wenn Sie nur an dem Code interessiert sind, können Sie zum Abschnitt mit dem Beispielcode springen.

Voraussetzungen

  • Konfigurieren Sie Ihre Entwicklungsumgebung, falls Sie dies noch nicht getan haben. Dies wird in Abschnitten wie Installieren und konfigurieren Sie Ihre Toolchain und beschriebenErste Schritte.

  • Identifizieren oder erstellen Sie mindestens eineAWS-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.

Einrichten von AWS

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. Gehen Sie dann wie folgt vor:

Amazon S3

Gehen Sie zur Amazon S3 S3-Konsole und fügen Sie einige harmlose Buckets hinzu. Später in diesem Tutorial wird der SSO-Benutzer eine Liste dieser Buckets abrufen.

AWSICH BIN

Gehen Sie zur IAM-Konsole 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

Gehen Sie zur AWS OrganizationsKonsole und aktivieren Sie Organizations. Weitere Informationen finden Sie unter Erstellen einer Organisation im Benutzerhandbuch für AWS Organizations.

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

Gehen Sie zur IAM Identity Center-Konsole 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 im IAM Identity Center-Benutzerhandbuch.

Führen Sie dann die folgende Konfiguration durch.

  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.

  2. Suchen Sie im Banner von nach dem Wert AWS Management ConsoleAWS-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 wieus-east-1.

  3. Erstellen Sie einen SSO-Benutzer wie folgt:

    1. Gehen Sie zur Benutzerseite.

    2. 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 aus.

    3. 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 aus.

  4. Erstellen Sie eine Gruppe wie folgt:

    1. Gehen Sie zur Seite Gruppen.

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

    3. 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.

  5. Erstellen Sie einen Berechtigungssatz wie folgt:

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

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

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

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "iam:ListUsers" ], "Resource": "*" } ] }
    4. 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.

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

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

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

  7. 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.

  8. Wählen Sie den Tab „Benutzer und Gruppen“ und dann „Benutzer oder Gruppen zuweisen“.

  9. 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.

  10. 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

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

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

using System; using System.Threading.Tasks; using System.Diagnostics; // 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.Programmatic_login { class Program { // Requirements: // - An SSO profile in the SSO user's shared config file. // 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"); 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 login. // 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; } } // 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; } } }

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

using System; using System.Threading.Tasks; using System.Diagnostics; // 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.Programmatic_login { class Program { // Requirements: // - An SSO profile in the SSO user's shared config file. // 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"); 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 login. // 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; } } // 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 wirdmy-sso-profile.

Diese Anwendungen führen SSO-Anmeldeaufgaben durch, indem sie in der Eigenschaft Options eines SSO-Objekts eine Callback-Methode bereitstellen. AWSCredentials

Weisen Sie den SSO-Benutzer an

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.

  2. 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
  3. Führen Sie die Amazon S3 S3-Anwendung aus.

  4. 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.

  5. Wenn die Anmeldung abgeschlossen ist, zeigt die Anwendung die Liste der S3-Buckets an.

  6. 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

Wenn Sie die Ressourcen, die Sie in diesem Tutorial erstellt haben, nicht behalten möchten, bereinigen Sie sie. Dabei kann es sich AWS um Ressourcen oder Ressourcen in Ihrer Entwicklungsumgebung handeln, z. B. Dateien und Ordner.