keenauth_connection_oidc_config

La risorsa keenauth_connection_oidc_config imposta la configurazione della relying party di una connessione OIDC enterprise: l'issuer del provider di identità, il client ID registrato lì, il metodo di autenticazione del client, il profilo del provider e il client secret.

Il client secret è write-only

client_secret_wo è un argomento write-only. Il provider lo invia all'API e non lo scrive mai nei file di state o di plan, e l'API non lo restituisce mai. Gli argomenti write-only richiedono OpenTofu 1.11 o Terraform 1.11 o successivo. Una versione precedente rifiuta la configurazione prima di inviare qualsiasi cosa; in quel caso imposta il secret con keenauth connections oidc put.

Fornisci il secret tramite una variabile effimera, così OpenTofu non lo memorizza nemmeno nel plan:

variable "corp_idp_client_secret" {
  type      = string
  sensitive = true
  ephemeral = true
}

resource "keenauth_connection" "corp" {
  key      = "corp-oidc"
  type     = "enterprise"
  strategy = "oidc"
  name     = "corp-oidc"
}

resource "keenauth_connection_oidc_config" "corp" {
  connection_id      = keenauth_connection.corp.id
  sp_host            = "acme.eu.keenauth.app"
  issuer             = "https://login.idp.example.com"
  client_id          = "keenauth-rp"
  client_auth_method = "client_secret_basic"

  client_secret_wo         = var.corp_idp_client_secret
  client_secret_wo_version = 1
}

Registra redirect_uri (https://<sp_host>/sso/<connection_id>/callback) presso il provider di identità. Se il tuo provider di identità lo supporta, preferisci client_auth_method = "private_key_jwt": la chiave dell'ambiente firma la client assertion e non esiste alcun secret.

Rotazione

Il provider non può leggere il secret, quindi non può vedere una modifica al suo valore. Lo invia client_secret_wo quando la risorsa viene creata e ogni volta che cambia client_secret_wo_version. Per ruotarlo, inserisci il nuovo secret e aumenta la versione nella stessa modifica.

client_secret_expires_at è un promemoria della data in cui il provider di identità invalida il secret. L'API lo scrive solo insieme al secret, quindi modificalo nella stessa modifica della versione.

Regole verificate in fase di plan

Regola Motivo
client_secret_wo non è consentito con private_key_jwt. Questo metodo non usa alcun secret; passarvi elimina il secret memorizzato.
Un metodo client_secret_* richiede client_secret_wo alla creazione e una nuova versione quando non è memorizzato alcun secret. Il provider di identità rifiuterebbe la richiesta del token.
sp_host non può cambiare dopo la prima scrittura. Il callback viene fissato quando la configurazione viene scritta per la prima volta.
entra_tenant_id è obbligatorio con provider_profile = "entra" ed è consentito solo in quel caso. La regola dell'API.
client_secret_expires_at è in UTC con secondi interi, per esempio 2027-01-31T00:00:00Z. L'API lo restituisce in questa forma; un'altra forma mostrerebbe una differenza a ogni plan.

Import e destroy

Esegui l'import con l'ID della connessione. L'API non restituisce sp_host, entra_tenant_id né il secret, quindi il plan successivo scrive una volta la configurazione con i valori della tua configurazione.

L'API non ha un'operazione di delete per questa configurazione. Il destroy della risorsa la rimuove solo dallo state; la configurazione viene eliminata insieme alla sua connessione.