Skip to content

Latest commit

 

History

History
186 lines (142 loc) · 7.34 KB

guide.it-it.md

File metadata and controls

186 lines (142 loc) · 7.34 KB
title excerpt updated
Gestione dei token
Come utilizzare i token via API Keystone
2024-12-10

Obiettivo

Scopri come configurare le connessioni alle API keystone sul tuo servizio con l'aiuto dei token.

[!primary]

Le informazioni dettagliate sono valide per la versione 3.0 dell'API di Keystone.

Procedura

Definizioni

  • Endpoint: Indirizzo HTTP che punta direttamente su un'API di un servizio. ad esempio https://auth.cloud.ovh.net/v3/{.external} per l'endpoint di autenticazione o https://image.compute.gra1.cloud.ovh.net/{.external} per l'endpoint di gestione delle immagini della zona GRA1.

  • Token: Carattere unico associato all'autenticazione e ai diritti di accesso. L'utente richiede un token fornendo i propri credenziali (informazioni di login) all'API di autenticazione. e viene generato e fornito con una validità limitata di 24 ore. Un token può essere "scoped" o "unscoped", cioè può essere direttamente collegato a una parte o non essere collegato ad alcun elemento.

Principio generale

La maggior parte delle richieste sottoposte alle API OpenStack devono rispondere a un meccanismo di autorizzazione. Questo meccanismo funziona ottenendo il token e confermando il token, Ecco le grandi linee del funzionamento di una chiamata dall'autenticazione all'esecuzione della chiamata.

  • Richiesta di creazione di token presso l'endpoint di autenticazione con i credentials
  • Richiesta sull'endpoint del servizio desiderato (storage, compute, network, ecc...) fornendo il token come parametro
  • L'API del servizio recupera il token e richiede la verifica della validità presso il servizio di autenticazione
  • Se la validità è verificata, la chiamata è presa in carico ed eseguita

Dato che i token hanno una durata di validità definita, essi scadono e devono essere rinnovati ogni volta che necessario.

Analogamente, se un token deve essere revocato prima della data di scadenza, è possibile farlo via API.

Per maggiori informazioni, consulta la documentazione di OpenStack dell'API{.external}.

Operazioni manuali

Le operazioni che seguono possono essere effettuate manualmente, sono generalmente utilizzate a fini pedagogici o di debugging.

È necessario caricare l'ambiente utilizzando il file openRC. Per effettuare questa operazione, ti consigliamo di scaricare e utilizzare il file openrc.sh che trovi nell'interfaccia Horizon. Quest’ultimo disporrà di tutte le variabili d’ambiente necessarie alla costruzione dei comandi successivi.

Per connetterti a Horizon e scaricare il file, consulta questa guida.

Nel nostro esempio, vogliamo ottenere le informazioni di metadata di un oggetto archiviato grazie all'offerta Public Cloud Storage. Gli step sono:

  • Richiesta di creazione di un token
  • Recupero delle variabili token ID e endpoint publicURL
  • Richiesta sull'oggetto con le informazioni recuperate

Il tool da riga di comando cURL permette di costruire richieste da qualsiasi parte.

Step 1: Richiesta di creazione di un token

curl -X POST ${OS_AUTH_URL}v${OS_IDENTITY_API_VERSION}/auth/tokens -H "Content-Type: application/json" -d ' { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "'$OS_USERNAME'", "domain": { "id": "default" }, "password": "'$OS_PASSWORD'" } } }, "scope": { "project": { "name": "'$OS_TENANT_NAME'", "domain": { "id": "default" } } } } }' | python -mjson.tool

La risposta del server è questa:

 {
  "token": {
    "is_domain": false,
    "methods": [
      "password"
    ],
    "roles": [
      {
        "id": "9543e89aeb484aee8ec7d01e87223b16",
        "name": "objectstore_operator"
      }
    ],
    "is_admin_project": false,
    "project": {
      "domain": {
        "id": "default",
        "name": "Default"
      },
      "id": "<ID OF THE PROJECT>",
      "name": "<NAME OF THE PROJECT>"
    },
    "catalog": [
      {
        "endpoints": [
          {
            "url": "https://network.compute.sbg1.cloud.ovh.net/",
            "interface": "internal",
            "region": "SBG1",
            "region_id": "SBG1",
            "id": "075839111e7a41f1bb458926e5f04cec"
          },
          [...]
        ],
        "type": "network",
        "id": "0be6ed3dce244b8295ff643739a86809",
        "name": "neutron"
      },
      [...]
    ],
    "expires_at": "2020-01-17T14:53:32.000000Z",
    "user": {
      "password_expires_at": null,
      "domain": {
        "id": "default",
        "name": "Default"
      },
      "id": "<ID OF THE USER>",
      "name": "<NAME OF THE USER>"
    },
    "audit_ids": [
      "IuNOR-lKQ9GJGQd8taWBnQ"
    ],
    "issued_at": "2020-01-16T14:53:32.000000Z"
  }
}

Step 2: Recupero delle variabili token ID e endpoint publicURL

Entrambe le informazioni sono disponibili nell'uscita dell'ordine precedente.

Per l'endpoint pubblicoURL, occorre ricercare nella sezione "object-store" e nella regione appropriata, qui "SBG".

export endpoint="https://storage.sbg.cloud.ovh.net/v1/AUTH_9ea...ff0"

E' l'indirizzo del endpoint del servizio di object storage che permetterà di richiedere le informazioni sull'oggetto.

export token=$(curl -is -X POST ${OS_AUTH_URL}v${OS_IDENTITY_API_VERSION}/auth/tokens -H "Content-Type: application/json" -d ' { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "'$OS_USERNAME'", "domain": { "id": "default" }, "password": "'$OS_PASSWORD'" } } }, "scope": { "project": { "name": "'$OS_TENANT_NAME'", "domain": { "id": "default" } } } } }' | grep -i '^x-subject-token' | cut -d" " -f2)

Questo token è l'elemento di autenticazione che verrà utilizzato per la richiesta successiva.

Step 3: Richiesta sull'oggetto con le informazioni recuperate

curl -X GET $endpoint/photos/fullsize/ovh-summit-2014-backstage-DS.jpg -H "X-Auth-Token: $token" -I
  • -X GET : metodo HTTP GET
  • $endpoint/photos/fullsize/ovh-summit-2014-backstage-DS.jpg: indirizzo dell'oggetto
  • -H "X-Auth-Token: $token": elemento di autenticazione
  • -I: opzione curl per recuperare solo i metadatas

La risposta è:

HTTP/1.1 200 OK
Content-Length: 190046
Content-Type: image/jpeg
Accept-Ranges: bytes
Last-Modified: Thu, 24 Sep 2015 14:20:11 GMT
Etag: c93e12530b66f121d4bd5a6ae096ee77
X-Timestamp: 1443104410.15437
X-Object-Meta-Mtime: 1424095540.000000
X-Trans-Id: 95CAB26E:D200_052711B1:01BB_560D4CE7_1631931:2BB4
Date: Thu, 01 Oct 2015 15:10:31 GMT
Connection: close

Gestione automatica: libreria e SDK

Si raccomanda vivamente di utilizzare le librerie che permettono la gestione trasparente dei token. In questo modo, fornendo semplicemente i credenziali di accesso alla libreria, i token saranno automaticamente generati, utilizzati e rinnovati senza doverne gestire a livello applicativo.

Ci sono molte librerie nei diversi linguaggi. Per maggiori informazioni, consulta la lista ufficiale{.external}.

Eliminazione del token

curl -i -X DELETE \
  -H "X-Auth-Token: $OS_TOKEN" \
  -H "X-Subject-Token: $OS_TOKEN" \
  "http://localhost:5000/v3/auth/tokens"

Se non ci sono errori, si ottiene una risposta vuota.

Per saperne di più

Contatta la nostra Community di utenti all’indirizzo https://community.ovh.com/en/.