
# keenauth_connection_oidc_config

El recurso `keenauth_connection_oidc_config` define la configuración de la parte que confía (relying party) de una conexión OIDC empresarial: el emisor del proveedor de identidad, el ID de cliente registrado allí, el método de autenticación del cliente, el perfil del proveedor y el secreto del cliente.

## El secreto del cliente es de solo escritura

`client_secret_wo` es un argumento de solo escritura. El proveedor lo envía a la API y nunca lo escribe en los archivos de estado ni de plan, y la API nunca lo devuelve. Los argumentos de solo escritura requieren OpenTofu 1.11 o Terraform 1.11 o posterior. Una versión anterior rechaza la configuración antes de enviar nada; en ese caso, establezca el secreto con `keenauth connections oidc put`.

Proporcione el secreto desde una variable efímera, de modo que OpenTofu tampoco lo almacene en el 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
}
```

Registre `redirect_uri` (`https://<sp_host>/sso/<connection_id>/callback`) en el proveedor de identidad. Si su proveedor de identidad lo admite, prefiera `client_auth_method = "private_key_jwt"`: la clave del entorno firma la aserción del cliente y no existe ningún secreto.

## Rotación

El proveedor no puede leer el secreto de vuelta, por lo que no puede detectar un cambio en él. Envía `client_secret_wo` al crear el recurso y cada vez que cambia `client_secret_wo_version`. Para rotarlo, coloque el nuevo secreto y aumente la versión en el mismo cambio.

`client_secret_expires_at` es un recordatorio de cuándo el proveedor de identidad invalida el secreto. La API lo escribe únicamente junto con el secreto, así que cámbielo en el mismo cambio que la versión.

## Reglas verificadas en el momento del plan

| Regla | Motivo |
|---|---|
| `client_secret_wo` no se permite con `private_key_jwt`. | Ese método no usa secreto; cambiar a él elimina el secreto almacenado. |
| Un método `client_secret_*` requiere `client_secret_wo` al crear, y una nueva versión cuando no hay ningún secreto almacenado. | El proveedor de identidad rechazaría la solicitud de token. |
| `sp_host` no puede cambiar después de la primera escritura. | La URL de callback se fija cuando se escribe la configuración por primera vez. |
| `entra_tenant_id` es obligatorio con `provider_profile = "entra"` y solo se permite en ese caso. | Regla de la API. |
| `client_secret_expires_at` está en UTC con segundos enteros, por ejemplo `2027-01-31T00:00:00Z`. | La API lo devuelve en este formato; otro formato mostraría una diferencia en cada plan. |

## Importación y destrucción

Importe con el ID de la conexión. La API no devuelve `sp_host`, `entra_tenant_id` ni el secreto, así que el siguiente plan escribirá la configuración una vez con los valores de su configuración.

La API no tiene una operación de eliminación para esta configuración. Destruir el recurso solo lo elimina del estado; la configuración se elimina junto con su conexión.
