

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

# Guida introduttiva alla federazione delle identità in uscita
<a name="id_roles_providers_outbound_getting_started"></a>

Questa guida mostra come abilitare la federazione delle identità in uscita per il tuo AWS account e ottenere il tuo primo JSON Web Token (JWT) (utilizzando l'API). [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) Attiverai la funzionalità, stabilirai una relazione di fiducia con un servizio esterno, configurerai le autorizzazioni IAM e richiederai un token utilizzando AWS CLI AWS o SDK for Python (Boto3).

## Prerequisiti
<a name="outbound-federation-prerequisites"></a>

Prima di iniziare, assicurati di disporre dei seguenti elementi:
+ Ultima versione della AWS CLI o Python 3.8 (o successiva) e Boto3 installata (per esempi SDK) AWS 
+ Un account di servizio esterno in cui è possibile configurare relazioni di fiducia (ad esempio un provider cloud esterno, un provider SaaS o un'applicazione di test)

**Nota**  
L'`GetWebIdentityToken`API non è disponibile sull'endpoint STS Global.
I JSON Web Tokens (JWTs) generati dall'`GetWebIdentityToken`API non possono essere utilizzati per la federazione di OpenID Connect (OIDC) in AWS (tramite l'API). [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)

## Abilita la federazione delle identità in uscita per il tuo account
<a name="enable-outbound-federation"></a>

È necessario abilitare la federazione delle identità in uscita prima di poter richiedere i token. È possibile abilitare la funzionalità utilizzando la console di AWS gestione o utilizzando l'API a livello di codice. [EnableOutboundWebIdentityFederation](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOutboundWebIdentityFederation.html)

### Utilizzo della AWS CLI
<a name="enable-using-cli"></a>

```
aws iam enable-outbound-web-identity-federation
```

### Usare AWS SDK per Python
<a name="enable-using-sdk"></a>

```
import boto3

# Create IAM client
iam_client = boto3.client('iam')

# Enable outbound identity federation
response = iam_client.enable_outbound_web_identity_federation()
print(f"Feature enabled. Issuer URL: {response['IssuerUrl']}")
print(f"Status: {response['Status']}")
```

### Utilizzo della console AWS
<a name="enable-using-console"></a>

Accedi a IAM e seleziona **Impostazioni account** nella sezione **Gestione degli accessi** del menu di navigazione a sinistra

![Voce del menu delle impostazioni dell'account evidenziata nella barra di navigazione a sinistra nella sezione Gestione degli accessi.](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/outbound-screen-1.png)


Dopo aver abilitato la funzione, prendi nota dell'URL emittente specifico del tuo account. Utilizzerai questo URL per configurare le relazioni di fiducia nei servizi esterni. È inoltre possibile recuperare l'URL dell'emittente, se necessario, utilizzando l'API. [GetOutboundWebIdentityFederationInfo](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOutboundWebIdentityFederationInfo.html)

![Interfaccia Outbound Identity Federation che mostra lo stato Abilitato con il pulsante Disabilita e l'URL dell'emittente del token.](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/outbound-screen-2.png)


## Stabilisci una relazione di fiducia in un servizio esterno
<a name="establish-trust-relationship"></a>

Configura il servizio esterno in modo che consideri attendibili e accetti i token emessi dal tuo AWS account. I passaggi specifici variano in base al servizio, ma generalmente comportano:
+ Registrazione dell'URL AWS dell'emittente dell'account come provider di identità affidabile
+ Configurazione delle affermazioni da convalidare (pubblico, modelli tematici)
+ Il token di mappatura rivendica le autorizzazioni nel servizio esterno

Per istruzioni di configurazione dettagliate, consulta la documentazione del servizio esterno.

## Configurazione delle autorizzazioni IAM
<a name="configure-iam-permissions"></a>

Crea una policy IAM che conceda l'autorizzazione a chiamare l'[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)API e allega la policy a un ruolo IAM che deve generare token.

Questa policy di esempio concede l'accesso alla generazione di token con restrizioni specifiche. Consente di richiedere token solo per "https://api.example.com" come destinatari e impone una durata massima del token di 5 minuti (300 secondi). [IAM e AWS STS chiavi di contesto delle condizioni](reference_policies_iam-condition-keys.md)Per un elenco delle chiavi di condizione che è possibile utilizzare per applicare le proprietà dei token, fare riferimento a.

### Policy IAM di esempio
<a name="example-iam-policy"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "sts:IdentityTokenAudience": "https://api.example.com"
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                }
            }
        }
    ]
}
```

## Richiedi il tuo primo JSON Web Token (JWT)
<a name="request-first-jwt"></a>

Puoi richiedere un token Web JSON utilizzando l'API. [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) È possibile specificare i seguenti parametri quando si chiama l'API:
+ **Pubblico (obbligatorio):** il destinatario previsto del token. Questo valore compila l'attestazione «aud» nel JWT. I servizi esterni convalidano questa affermazione per garantire che il token fosse destinato a loro.
+ **SigningAlgorithm (obbligatorio):** L'algoritmo crittografico utilizzato per firmare il token. I valori validi sono ES384 e. RS256 ES384 Utilizzateli per garantire sicurezza e prestazioni ottimali o RS256 per una maggiore compatibilità con i sistemi che non supportano l'ECDSA.
+ **DurationSeconds (opzionale):** la durata del token in secondi. I valori validi vanno da 60 a 3600. Il valore predefinito è 300 (5 minuti). Consigliamo una durata più breve dei token per una maggiore sicurezza.
+ **Tag (opzionale):** un elenco di coppie chiave-valore da includere come attestazioni personalizzate nel token. I servizi esterni possono utilizzare queste attestazioni per un'autorizzazione dettagliata.

L'API restituisce i seguenti campi:
+ **IdentityToken:** Il JWT firmato come stringa con codifica base64url. Includi questo token nelle richieste a servizi esterni.
+ **Scadenza:** il timestamp UTC di scadenza del token.

### Utilizzo della AWS CLI
<a name="using-aws-cli"></a>

```
aws sts get-web-identity-token \
    --audience "https://api.example.com" \
    --signing-algorithm ES384 \
    --duration-seconds 300 \
    --tags Key=team,Value=data-engineering \
           Key=environment,Value=production \
           Key=cost-center,Value=analytics
```

### Usare AWS SDK per Python
<a name="using-aws-sdk-python"></a>

```
import boto3

sts_client = boto3.client('sts')

response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    DurationSeconds=300,
    SigningAlgorithm='RS256',
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'environment', 'Value': 'production'},
        {'Key': 'cost-center', 'Value': 'analytics'}
    ]
)

token = response['WebIdentityToken']
```

Puoi anche decodificare il JWT per ispezionarne il contenuto utilizzando librerie JWT standard come PyJWT, Python-JOSE per Python, Nimbus JOSE\+JWT per Java o debugger come jwt.io. Per ulteriori informazioni sulle attestazioni incluse nel token, consulta. [Comprendere le dichiarazioni relative ai token](id_roles_providers_outbound_token_claims.md)

## Utilizza il token con un servizio esterno
<a name="use-token-with-external-service"></a>

Dopo aver ricevuto il token, includilo nelle richieste al servizio esterno. Il metodo varia in base al servizio, ma la maggior parte dei servizi accetta i token nell'intestazione di autorizzazione. Il servizio esterno deve implementare una logica di convalida dei token che recuperi le chiavi JWKS dall'endpoint noto dell'emittente, verifichi la firma del token e convalidi le richieste essenziali prima di concedere l'accesso ai carichi di lavoro. AWS 

## Recupera chiavi di verifica e metadati dagli endpoint OpenID Connect (OIDC)
<a name="fetch-verification-keys"></a>

L'URL emittente univoco del tuo AWS account ospita gli endpoint di rilevamento OpenID Connect (OIDC) che contengono le chiavi di verifica e i metadati necessari per la verifica dei token.

L'URL dell'endpoint di rilevamento OIDC contiene i metadati utilizzati da alcuni provider per verificare i token. È disponibile all'indirizzo:

```
{issuer_url}/.well-known/openid-configuration
```

L'endpoint JWKS (JSON Web Key Set) contiene le chiavi utilizzate per verificare le firme dei token. È disponibile all'indirizzo:

```
{issuer_url}/.well-known/jwks.json
```

### Recupera JWKS usando curl
<a name="fetch-jwks-curl"></a>

```
curl https://{issuer_url}/.well-known/jwks.json
```

Risposta:

```
{
  "keys": [
    {
      "kty": "EC",
      "use": "sig",
      "kid": "key-id-1",
      "alg": "ES384",
      "crv": "P-384",
      "x": "base64-encoded-x-coordinate",
      "y": "base64-encoded-y-coordinate"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "key-id-2",
      "n": "base64-encoded-modulus",
      "e": "AQAB"
    }
  ]
}
```

### Usare AWS SDK per Python
<a name="fetch-using-sdk"></a>

```
import requests

# Fetch Openid Configuration
open_id_config_response = requests.get("https://{issuer_url}/.well-known/openid-configuration")
open_id_config = open_id_config_response.json()

# Fetch JWKS
jwks_response = requests.get("https://{issuer_url}/.well-known/jwks.json")
jwks = jwks_response.json()
```

Ti consigliamo di memorizzare queste chiavi nella cache per evitare di recuperarle per ogni verifica del token.

### Convalide essenziali dei reclami
<a name="essential-claim-validations"></a>
+ **Oggetto (secondario):** verifica che la rivendicazione relativa all'oggetto contenga il pattern ARN principale IAM previsto.
+ **Scadenza (exp):** assicurati che il token non sia scaduto. Le librerie JWT in genere lo gestiscono automaticamente.
+ **Pubblico (aud):** verifica che il pubblico corrisponda al valore previsto. Ciò impedisce che i token destinati ad altri servizi vengano utilizzati con i tuoi.
+ **Emittente/i:** verifica che l'emittente corrisponda agli AWS account di cui ti fidi. Mantieni un elenco di emittenti affidabili. URLs

Ove possibile, è necessario convalidare ulteriori attestazioni AWS specifiche per implementare un controllo granulare degli accessi nel servizio esterno. Ad esempio, convalida l'attestazione org\_id per limitare l'accesso ai principali IAM nella tua AWS organizzazione, seleziona principal\_tags per imporre il controllo degli accessi basato sugli attributi (ad esempio consentire solo ambienti di produzione o team specifici) o verifica le dichiarazioni relative al contesto della sessione come lambda\_source\_function\_arn o ec2\_instance\_source\_vpc per limitare l'accesso in base alla risorsa di calcolo. Per un elenco completo [delle attestazioni incluse nel token](id_roles_providers_outbound_token_claims.md), consulta Comprendere le attestazioni relative ai token.