Gestione dei token

Database di conoscenze

Gestione dei token


Icons/System/eye-open Created with Sketch. 474 viste 10.12.2024 Tutorials
Informazioni sulla traduzione

Questa traduzione è stata generata automaticamente dal nostro partner SYSTRAN. I contenuti potrebbero presentare imprecisioni, ad esempio la nomenclatura dei pulsanti o alcuni dettagli tecnici. In caso di dubbi consigliamo di fare riferimento alla versione inglese o francese della guida. Per aiutarci a migliorare questa traduzione, utilizza il pulsante "Contribuisci" di questa pagina.

Obiettivo

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

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/ per l'endpoint di autenticazione o https://image.compute.gra1.cloud.ovh.net/ 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.

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.

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

Articoli correlati