

È stata rilasciata la versione 4 (V4) di\$1 AWS SDK per .NET 

Per informazioni su come apportare modifiche e migrare le applicazioni, consulta l'argomento sulla [migrazione](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)

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 l'utilizzo delle AWS CLI applicazioni SSO e.NET
<a name="sso-tutorial-cli-and-app"></a>

Questo tutorial mostra come abilitare l'SSO per un'applicazione.NET di base e un utente SSO di prova. Utilizza il AWS CLI per generare un token SSO temporaneo invece di [generarlo](sso-tutorial-app-only.md) a livello di codice.

Questo tutorial mostra una piccola parte della funzionalità SSO in. AWS SDK per .NET Per tutti i dettagli sull'utilizzo di IAM Identity Center con AWS SDK per .NET, consulta l'argomento con [informazioni di base](sso.md). In tale argomento, vedi in particolare la descrizione di alto livello di questo scenario nella sottosezione chiamata. [AWS CLI e applicazione.NET](sso.md#sso-generate-use-token-cli-and-app-summary)

**Nota**  
Diversi passaggi di questo tutorial consentono di configurare servizi come AWS Organizations IAM Identity Center. Se hai già eseguito queste configurazioni o se sei interessato solo al codice, puoi passare alla sezione con il codice di [esempio](#sso-tutorial-cli-and-app-code).

## Prerequisiti
<a name="sso-tutorial-cli-and-app-prereq"></a>
+ Configura il tuo ambiente di sviluppo se non l'hai già fatto. Questo è descritto in sezioni come [Installazione e configurazione della toolchain per AWS SDK per .NET](net-dg-dev-env.md) e[Nozioni di base](net-dg-config.md).
+ 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.
+ Assicurati che la AWS CLI versione 2 sia [installata sul computer](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dell'utente SSO. Puoi verificarlo eseguendo `aws --version` in un prompt dei comandi o in un terminale.

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

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

Per eseguire questa configurazione, accedi prima al test Account AWS come amministratore. Successivamente, esegui queste operazioni:

### Simple Storage Service (Amazon S3)
<a name="w2aac15b7c41c15b3b5"></a>

Vai alla [console Amazon S3](https://console.aws.amazon.com/s3/home) e aggiungi alcuni bucket innocui. Più avanti in questo tutorial, l'utente SSO recupererà un elenco di questi bucket.

### AWS IAM
<a name="w2aac15b7c41c15b3b7"></a>

Vai alla [console IAM](https://console.aws.amazon.com/iam/home#/users) 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
<a name="w2aac15b7c41c15b3b9"></a>

Vai alla [AWS Organizations console](https://console.aws.amazon.com/organizations/) e abilita Organizations. Per ulteriori informazioni sulla configurazione di un'organizzazione, consulta [Creazione di un'organizzazione](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html) nella [Guida per l'utente di AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/).

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.

### Centro identità IAM
<a name="w2aac15b7c41c15b3c11"></a>

Vai alla [console IAM Identity Center](https://console.aws.amazon.com/singlesignon/) e abilita l'SSO. Esegui la verifica via e-mail, se necessario. Per ulteriori informazioni, consulta [Enable IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/step1.html) nella [Guida per l'utente di IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/).

Quindi, esegui la seguente configurazione.

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

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

1. Nel banner di Console di gestione AWS, cerca Regione AWS quello che è stato impostato quando hai abilitato l'SSO. Questo è il menu a discesa a sinistra dell' Account AWS ID. Registra il codice regionale per utilizzarlo successivamente nell'`sso_region`impostazione. Questo codice sarà simile a`us-east-1`.

1. Crea un utente SSO come segue:

   1. Vai alla pagina **Utenti**.

   1. Scegli **Aggiungi utente** e inserisci il **nome** utente, l'**indirizzo e-mail**, **il nome** e il **cognome dell'**utente. Quindi, seleziona **Successivo**.

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

1. Crea un gruppo come segue:

   1. Vai alla pagina **Gruppi**.

   1. Scegli **Crea gruppo** e inserisci il **nome e la **descrizione** del gruppo**.

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

1. Crea un set di autorizzazioni come segue:

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

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

   1. Apri **Inline policy** e inserisci la seguente policy:

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

****  

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

------

   1. Per questo tutorial, inserisci `SSOReadOnlyRole` come **nome del set di autorizzazioni**. Aggiungi una **descrizione** se lo desideri, quindi scegli **Avanti**.

   1. Controlla le informazioni, quindi scegli **Crea**.

   1. Registra il nome del set di autorizzazioni per utilizzarlo successivamente nell'`sso_role_name`impostazione.

1. Vai alla pagina degli **AWS account** e scegli l' AWS account che hai aggiunto all'organizzazione in precedenza.

1. Nella sezione **Panoramica** di quella pagina, trova l'**ID dell'account** e registralo per un uso successivo nell'`sso_account_id`impostazione.

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

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

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

## Crea applicazioni di esempio
<a name="sso-tutorial-cli-and-app-code"></a>

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

### Elenca i bucket Amazon S3
<a name="sso-tutorial-cli-and-app-code-s3"></a>

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

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

### Elenca gli utenti IAM
<a name="sso-tutorial-cli-and-app-code-iam"></a>

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

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

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`

## Istruisci l'utente SSO
<a name="sso-tutorial-cli-and-app-user"></a>

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`

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

1. Esegui l'applicazione Amazon S3. Viene visualizzata un'eccezione di runtime.

1. Esegui il AWS CLI comando seguente:

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

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

1. Esegui nuovamente l'applicazione Amazon S3. L'applicazione ora visualizza l'elenco dei bucket S3.

1. 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
<a name="sso-tutorial-cli-and-app-cleanup"></a>

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.