Tutorial per SSO che utilizza solo applicazioni.NET - AWS SDK for .NET

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial per SSO che utilizza solo applicazioni.NET

Questo tutorial mostra come abilitare l'SSO per un'applicazione di base e un utente SSO di prova. Configura l'applicazione per generare un token SSO temporaneo a livello di codice anziché utilizzare il. AWS CLI

Questo tutorial mostra una piccola parte della funzionalità SSO in. AWS SDK for .NET Per tutti i dettagli sull'utilizzo di IAM Identity Center conAWS SDK for .NET, consulta l'argomento con informazioni di base. In tale argomento, vedi in particolare la descrizione di alto livello di questo scenario nella sottosezione chiamata. Solo applicazione.NET

Nota

Diversi passaggi di questo tutorial consentono di configurare servizi come AWS Organizations IAM Identity Center. Se hai già eseguito quella configurazione o se sei interessato solo al codice, puoi passare alla sezione con il codice di esempio.

Prerequisiti

  • Configura il tuo ambiente di sviluppo se non l'hai già fatto. Questo è descritto in sezioni come Installa e configura la tua toolchain eInizia a usare.

  • Identificane o creane almeno uno Account AWS che puoi usare per testare l'SSO. Ai fini di questo tutorial, questo è chiamato test Account AWS o semplicemente account di test.

  • Identifica un utente SSO che possa testare l'SSO per te. Si tratta di una persona che utilizzerà l'SSO e le applicazioni di base che creerai. Per questo tutorial, quella persona potresti essere tu (lo sviluppatore) o qualcun altro. Consigliamo inoltre una configurazione in cui l'utente SSO lavori su un computer che non si trova nel tuo ambiente di sviluppo. Tuttavia, ciò non è strettamente necessario.

  • Sul computer dell'utente SSO deve essere installato un framework.NET compatibile con quello utilizzato per configurare l'ambiente di sviluppo.

Configurazione di AWS

Questa sezione mostra come configurare vari AWS servizi per questo tutorial.

Per eseguire questa configurazione, accedi prima al test Account AWS come amministratore. Quindi, procedi come segue:

Amazon S3

Vai alla console Amazon S3 e aggiungi alcuni bucket innocui. Più avanti in questo tutorial, l'utente SSO recupererà un elenco di questi bucket.

AWSIAM

Vai alla console IAM e aggiungi alcuni utenti IAM. Se concedi le autorizzazioni agli utenti IAM, limita le autorizzazioni a poche innocue autorizzazioni di sola lettura. Più avanti in questo tutorial, l'utente SSO recupererà un elenco di questi utenti IAM.

AWS Organizations

Vai alla AWS Organizationsconsole e abilita Organizations. Per ulteriori informazioni sulla configurazione di un'organizzazione, consulta Creazione di un'organizzazione nella Guida per l'utente di AWS Organizations.

Questa azione aggiunge il test Account AWS all'organizzazione come account di gestione. Se disponi di account di prova aggiuntivi, puoi invitarli a far parte dell'organizzazione, ma non è necessario farlo per questo tutorial.

IAM Identity Center

Vai alla console IAM Identity Center e abilita l'SSO. Esegui la verifica via e-mail, se necessario. Per ulteriori informazioni, consulta Enable IAM Identity Center nella Guida per l'utente di IAM Identity Center.

Quindi, esegui la seguente configurazione.

  1. Vai alla pagina Impostazioni. Cerca «l'URL del portale di accesso» e registra il valore per un uso successivo nell'sso_start_urlimpostazione.

  2. Nel banner diAWS Management Console, cerca Regione AWS quello che è stato impostato quando hai abilitato l'SSO. Questo è il menu a discesa a sinistra dell'Account AWSID. Registra il codice regionale per utilizzarlo successivamente nell'sso_regionimpostazione. Questo codice sarà simile aus-east-1.

  3. Crea un utente SSO come segue:

    1. Vai alla pagina Utenti.

    2. Scegli Aggiungi utente e inserisci il nome utente, l'indirizzo e-mail, il nome e il cognome dell'utente. Quindi, seleziona Next (Successivo).

    3. Scegli Avanti nella pagina per i gruppi, quindi rivedi le informazioni e scegli Aggiungi utente.

  4. Crea un gruppo come segue:

    1. Vai alla pagina Gruppi.

    2. Scegli Crea gruppo e inserisci il nome e la descrizione del gruppo.

    3. Nella sezione Aggiungi utenti al gruppo, seleziona l'utente SSO di prova che hai creato in precedenza. Quindi, seleziona Crea gruppo.

  5. Crea un set di autorizzazioni come segue:

    1. Vai alla pagina Set di autorizzazioni e scegli Crea set di autorizzazioni.

    2. In Tipo di set di autorizzazioni, seleziona Set di autorizzazioni personalizzato e scegli Avanti.

    3. Apri Inline policy e inserisci la seguente policy:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "iam:ListUsers" ], "Resource": "*" } ] }
    4. Per questo tutorial, inserisci SSOReadOnlyRole come nome del set di autorizzazioni. Aggiungi una descrizione se lo desideri, quindi scegli Avanti.

    5. Controlla le informazioni, quindi scegli Crea.

    6. Registra il nome del set di autorizzazioni per utilizzarlo successivamente nell'sso_role_nameimpostazione.

  6. Vai alla pagina degli AWSaccount e scegli l'AWSaccount che hai aggiunto all'organizzazione in precedenza.

  7. Nella sezione Panoramica di quella pagina, trova l'ID dell'account e registralo per un uso successivo nell'sso_account_idimpostazione.

  8. Scegli la scheda Utenti e gruppi, quindi scegli Assegna utenti o gruppi.

  9. Nella pagina Assegna utenti e gruppi, scegli la scheda Gruppi, seleziona il gruppo creato in precedenza e scegli Avanti.

  10. Seleziona il set di autorizzazioni creato in precedenza e scegli Avanti, quindi scegli Invia. La configurazione richiede alcuni istanti.

Crea applicazioni di esempio

Create le seguenti applicazioni. Verranno eseguiti sul computer dell'utente SSO.

Includi NuGet i pacchetti AWSSDK.SSO e AWSSDK.SSOOIDC in aggiunta a AWSSDK.S3 e. AWSSDK.SecurityToken

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; } } }

Includi NuGet pacchetti AWSSDK.SSO e AWSSDK.SSOOIDC in aggiunta a AWSSDK.IdentityManagement eAWSSDK.SecurityToken.

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; } } }

Oltre a visualizzare gli elenchi dei bucket Amazon S3 e degli utenti IAM, queste applicazioni visualizzano l'ARN dell'identità utente per il profilo abilitato all'SSO, illustrato in questo tutorial. my-sso-profile

Queste applicazioni eseguono attività di accesso SSO fornendo un metodo di callback nella proprietà Options di un oggetto SSO. AWSCredentials

Istruisci l'utente SSO

Chiedi all'utente SSO di controllare la sua e-mail e accettare l'invito SSO. Viene richiesto loro di impostare una password. Il messaggio potrebbe impiegare alcuni minuti per arrivare nella casella di posta dell'utente SSO.

Fornisci all'utente SSO le applicazioni che hai creato in precedenza.

Quindi, chiedi all'utente SSO di eseguire le seguenti operazioni:

  1. Se la cartella che contiene il AWS config file condiviso non esiste, creala. Se la cartella esiste e contiene una sottocartella chiamata.sso, elimina quella sottocartella.

    La posizione di questa cartella è %USERPROFILE%\.aws in genere in Windows, Linux e macOS. ~/.aws

  2. Crea un AWS config file condiviso in quella cartella, se necessario, e aggiungi un profilo come segue:

    [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. Esegui l'applicazione Amazon S3.

  4. Nella pagina di accesso Web risultante, accedi. Utilizza il nome utente contenuto nel messaggio di invito e la password creata in risposta al messaggio.

  5. Una volta completato l'accesso, l'applicazione visualizza l'elenco dei bucket S3.

  6. Esegui l'applicazione IAM. L'applicazione visualizza l'elenco degli utenti IAM. Questo è vero anche se non è stato eseguito un secondo accesso. L'applicazione IAM utilizza il token temporaneo creato in precedenza.

Pulizia

Se non vuoi conservare le risorse che hai creato durante questo tutorial, puliscile. Queste potrebbero essere AWS risorse o risorse presenti nel tuo ambiente di sviluppo, ad esempio file e cartelle.