

È 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 SSO che utilizza solo applicazioni.NET
<a name="sso-tutorial-app-only"></a>

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 invece di utilizzare il. AWS CLI](sso-tutorial-cli-and-app.md)

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. [Solo applicazione.NET](sso.md#sso-generate-use-token-app-only-summary)

**Nota**  
Diversi passaggi di questo tutorial ti aiutano a 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.](#sso-tutorial-app-only-code)

## Prerequisiti
<a name="sso-tutorial-app-only-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.

## Configurare AWS
<a name="sso-tutorial-app-only-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="w2aac15b7c39c15b3b5"></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="w2aac15b7c39c15b3b7"></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="w2aac15b7c39c15b3b9"></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="w2aac15b7c39c15b3c11"></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="w2aac15b7c39c15b3c11b7b1"></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-app-only-code"></a>

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

### Elenca i bucket Amazon S3
<a name="sso-tutorial-app-only-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;
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
                });
            };
            ssoCredentials.Options.SupportsGettingNewToken = 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;
        }
    }
}
```

### Elenca gli utenti IAM
<a name="sso-tutorial-app-only-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;
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
                });
            };
            ssoCredentials.Options.SupportsGettingNewToken = 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. [SSOAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentials.html)](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentialsOptions.html)

## Istruisci l'utente SSO
<a name="sso-tutorial-app-only-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.

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. Una volta completato l'accesso, l'applicazione 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-app-only-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.