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
Dieses Tutorial zeigt Ihnen, wie Sie SSO für eine grundlegende .NET-Anwendung und einen SSO-Testbenutzer aktivieren. Es verwendet dasAWS CLI, um ein temporäres SSO-Token zu generieren, anstatt es programmgesteuert zu generieren.
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. AWS CLIund .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 Konfigurationen 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.
-
Stellen Sie sicher, dass AWS CLI Version 2 auf dem Computer des SSO-Benutzers installiert ist. Sie können dies überprüfen, indem Sie es
aws --version
in einer Befehlszeile oder einem Terminal ausführen.
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
AWSICH BIN
Gehen Sie zur IAM-Konsole
AWS Organizations
Gehen Sie zur AWS OrganizationsKonsole
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
Führen Sie dann die folgende Konfiguration durch.
-
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. -
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
. -
Erstellen Sie einen SSO-Benutzer wie folgt:
-
Gehen Sie zur Benutzerseite.
-
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.
-
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.
-
-
Erstellen Sie eine Gruppe wie folgt:
-
Gehen Sie zur Seite Gruppen.
-
Wählen Sie Gruppe erstellen und geben Sie den Gruppennamen und die Beschreibung der Gruppe ein.
-
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.
-
-
Erstellen Sie einen Berechtigungssatz wie folgt:
-
Gehen Sie zur Seite „Berechtigungssätze“ und wählen Sie „Berechtigungssatz erstellen“.
-
Wählen Sie unter Typ des Berechtigungssatzes die Option Benutzerdefinierter Berechtigungssatz und dann Weiter aus.
-
Ö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": "*" } ] }
-
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. -
Überprüfen Sie die Informationen und wählen Sie dann Erstellen.
-
Notieren Sie sich den Namen des Berechtigungssatzes für die spätere Verwendung in der
sso_role_name
Einstellung.
-
-
Gehen Sie zur AWSKontoseite und wählen Sie das AWS Konto aus, das Sie der Organisation zuvor hinzugefügt haben.
-
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. -
Wählen Sie die Registerkarte Benutzer und Gruppen und dann Benutzer oder Gruppen zuweisen.
-
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.
-
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; // 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; } } }
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 wirdmy-sso-profile
.
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:
-
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. -
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 -
Führen Sie die Amazon S3 S3-Anwendung aus. Eine Laufzeitausnahme wird angezeigt.
-
Führen Sie den Befehl AWS CLI aus:
aws sso login --profile my-sso-profile
-
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.
-
Führen Sie die Amazon S3 S3-Anwendung erneut aus. Die Anwendung zeigt jetzt die Liste der S3-Buckets an.
-
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. Dies können AWS Ressourcen oder Ressourcen in Ihrer Entwicklungsumgebung sein, z. B. Dateien und Ordner.