Segreti nell’API di Reactor

Nell’API di Reactor, un segreto è una risorsa che rappresenta una credenziale di autenticazione. I segreti vengono utilizzati nell’inoltro degli eventi per l’autenticazione in un altro sistema per lo scambio sicuro dei dati. Pertanto, i segreti possono essere creati solo all’interno delle proprietà di inoltro degli eventi (proprietà la cui platform attributo impostato su edge).

Al momento sono tre i tipi di segreto supportati indicati nella type_of attributo:

Tipo di segreto
Descrizione
token
Una singola stringa di caratteri che rappresenta un valore del token di autenticazione noto e compreso da entrambi i sistemi.
simple-http
Contiene due attributi di stringa rispettivamente per nome utente e password.
oauth2-client_credentials
Contiene diversi attributi per supportare OAuth specifica di autenticazione. L’inoltro degli eventi richiede le informazioni richieste, quindi gestisce il rinnovo di questi token per te in un intervallo specificato.

Questa guida fornisce una panoramica di alto livello sulla configurazione dei segreti da utilizzare nell’inoltro degli eventi. Per istruzioni dettagliate su come gestire i segreti nell’API di Reactor, incluso un esempio di JSON della struttura di un segreto, consulta guida dell’endpoint "secrets".

Credenziali

Ogni segreto contiene un credentials che contiene i rispettivi valori delle credenziali. Quando creazione di un segreto nell’API, ogni tipo di segreto ha diversi attributi richiesti, come illustrato nelle sezioni seguenti:

token token

Segreti con un type_of valore di token richiede un solo attributo in credentials:

Attributo credenziali
Tipo di dati
Descrizione
token
Stringa
Un token segreto riconosciuto dal sistema di destinazione.

Il token viene memorizzato come valore statico, e quindi il segreto expires_at e refresh_at proprietà impostate su null quando viene creato il segreto.

simple-http simple-http

Segreti con un type_of valore di simple-http richiedi i seguenti attributi in credentials:

Attributo credenziali
Tipo di dati
Descrizione
username
Stringa
Un nome utente.
password
Stringa
Una password. Questo valore non è incluso nella risposta API.

Quando viene creato il segreto, i due attributi vengono scambiati con una codifica BASE64 di username:password. Dopo lo scambio, il segreto è expires_at e refresh_at proprietà impostate su null.

oauth2-client_credentials oauth2-client_credentials

Segreti con un type_of valore di oauth2-client_credentials richiedi i seguenti attributi in credentials:

Attributo credenziali
Tipo di dati
Descrizione
client_id
Stringa
ID client per l’integrazione OAuth.
client_secret
Stringa
Il segreto client per l’integrazione OAuth. Questo valore non è incluso nella risposta API.
token_url
Stringa
URL di autorizzazione per l’integrazione OAuth.
refresh_offset
Intero
(Facoltativo) Il valore, in secondi, di cui eseguire l'offset dell'operazione di aggiornamento. Se questo attributo viene omesso durante la creazione del segreto, il valore viene impostato su 14400 (quattro ore) per impostazione predefinita.
options
Oggetto

(Facoltativo) Specifica le opzioni aggiuntive per l'integrazione OAuth:

Quando un oauth2-client_credentials il segreto viene creato o aggiornato, il client_id e client_secret (ed eventualmente options) vengono scambiati in una richiesta POST al token_url, in base al flusso delle credenziali client del protocollo OAuth.

NOTE
Il corpo della risposta del servizio di autorizzazione deve essere compatibile con il protocollo OAuth.

Se il servizio di autorizzazione risponde con 200 OK e un corpo di risposta JSON, il corpo viene analizzato e il access_token viene inviato all’ambiente edge e expires_in viene utilizzato per calcolare expires_at e refresh_at attributi del segreto. Se sul segreto non è presente alcuna associazione di ambiente, access_token viene scartato.

Uno scambio di credenziali viene considerato riuscito nelle seguenti condizioni:

  • expires_in è maggiore di 28800 (otto ore).
  • refresh_offset è minore del valore di expires_in meno 14400 (quattro ore). Ad esempio, se expires_in è 36000 (dieci ore) e refresh_offset è 28800 (otto ore), lo scambio è considerato non riuscito perché 28800 è maggiore di 36000 - 14400 (21600).

Se lo scambio ha esito positivo, l’attributo di stato del segreto viene impostato su succeeded e valori per expires_at e refresh_at sono impostati:

  • expires_at è l’ora UTC corrente più il valore di expires_in.
  • refresh_at è l’ora UTC corrente più il valore di expires_in, meno il valore di refresh_offset. Ad esempio, se expires_in è 43200 (dodici ore) e refresh_offset è 14400 (quattro ore), il refresh_at proprietà impostata su 28800 (otto ore) dopo l’ora UTC corrente.

Se lo scambio non riesce per qualsiasi motivo, il status_details attributo in meta l'oggetto viene aggiornato con le relative informazioni.

Aggiornamento di un oauth2-client_credentials segreto

Se un oauth2-client_credentials il segreto è stato assegnato a un ambiente e il suo stato è succeeded (le credenziali sono state scambiate correttamente), viene eseguito automaticamente un nuovo scambio il refresh_at.

Se lo scambio ha esito positivo, il refresh_status attributo in meta l'oggetto è impostato su succeeded durante expires_at, refresh_at, e activated_at vengono aggiornati di conseguenza.

Se lo scambio non riesce, l’operazione viene tentata altre tre volte, con l’ultimo tentativo non più di due ore prima della scadenza del token di accesso. Se tutti i tentativi falliscono, il refresh_status_details attributo da meta l'oggetto viene aggiornato con i relativi dettagli.

oauth2-google oauth2-google

Segreti con un type_of valore di oauth2-google richiede il seguente attributo in credentials:

Attributo credenziali
Tipo di dati
Descrizione
scopes
Array

Elenca gli ambiti di prodotto di Google per l’autenticazione. Sono supportati i seguenti ambiti:

Dopo aver creato oauth2-google segreto, la risposta include un meta.authorization_url proprietà. È necessario copiare e incollare questo URL in un browser per completare il flusso di autenticazione di Google.

Autorizza nuovamente un oauth2-google segreto

L’URL di autorizzazione per un oauth2-google il segreto scade un'ora dopo la creazione del segreto (come indicato da meta.authorization_url_expires_at). Trascorso questo periodo, il segreto deve essere nuovamente autorizzato per rinnovare il processo di autenticazione.

Consulta la sezione guida dell’endpoint "secrets" per informazioni dettagliate su come autorizzare nuovamente un oauth2-google segreta, effettuando una richiesta PATCH all’API di Reactor.

Relazione ambiente

Quando crei un segreto, devi specificare ambiente in cui esisterà. I segreti vengono distribuiti immediatamente nell’ambiente in cui vengono creati.

Un segreto può essere associato a un solo ambiente. Una volta stabilita la relazione tra un segreto e un ambiente, il segreto non può essere cancellato dall’ambiente e non può essere associato a un ambiente diverso.

NOTE
L’unica eccezione a questa regola è se l’ambiente in questione viene eliminato. In questo caso, la relazione viene cancellata e il segreto può essere assegnato a un ambiente diverso.

Dopo aver scambiato le credenziali di un segreto con successo, affinché un segreto venga associato a un ambiente, l’artefatto di scambio (la stringa del token per token, la stringa con codifica Base64 per simple-httpo il token di accesso per oauth2-client_credentials) viene salvato in modo sicuro nell'ambiente.

Una volta salvato correttamente l’artefatto di scambio nell’ambiente, il segreto activated_at L'attributo è impostato sull'ora UTC corrente e ora è possibile farvi riferimento utilizzando un elemento dati. Consulta la sezione successiva per ulteriori informazioni sui riferimenti ai segreti.

Segreti di riferimento referencing-secrets

Per fare riferimento a un segreto, devi creare un elemento dati di tipo "Segreto" (fornito da Core estensione) su una proprietà di inoltro degli eventi. Durante la configurazione di questo elemento dati, viene richiesto di indicare il segreto da utilizzare per ogni ambiente. Puoi quindi creare regole che fanno riferimento a un elemento dati segreto, ad esempio all’interno dell’intestazione di una chiamata HTTP.

Elemento dati segreto

NOTE
Per aggiungere un elemento dati segreto a una libreria, è necessario averne almeno uno succeeded segreto associato all’ambiente in cui viene generata la libreria. Ad esempio, se una libreria ha un elemento dati segreto che non ha un succeeded segreto configurato per Segreto gestione temporanea , il tentativo di generare tale libreria nell'ambiente di staging genererà un errore.

In fase di esecuzione, l’elemento dati segreto viene sostituito con il corrispondente artefatto di scambio segreto salvato nell’ambiente.

Passaggi successivi

Questa guida descrive le nozioni di base sull’utilizzo dei segreti nell’API di Reactor. Per informazioni dettagliate su come gestire i segreti utilizzando le chiamate API, consulta guida dell’endpoint "secrets".

recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743