
# 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:

```terraform
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.
