
# keenauth_connection_oidc_config

Die Ressource `keenauth_connection_oidc_config` legt die Konfiguration der vertrauenden Partei (Relying Party) einer Enterprise-OIDC-Verbindung fest: den Aussteller des Identitätsanbieters, die dort registrierte Client-ID, die Methode zur Client-Authentifizierung, das Anbieterprofil und das Client-Geheimnis.

## Das Client-Geheimnis ist nur schreibbar

`client_secret_wo` ist ein nur schreibbares Argument. Der Provider sendet es an die API und schreibt es nie in State- oder Plan-Dateien, und die API gibt es nie zurück. Nur schreibbare Argumente erfordern OpenTofu 1.11 oder Terraform 1.11 oder neuer. Eine ältere Version lehnt die Konfiguration ab, bevor etwas gesendet wird. Setzen Sie das Geheimnis in diesem Fall stattdessen mit `keenauth connections oidc put`.

Übergeben Sie das Geheimnis über eine ephemere Variable, damit OpenTofu es auch nicht im Plan speichert:

```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
}
```

Registrieren Sie `redirect_uri` (`https://<sp_host>/sso/<connection_id>/callback`) beim Identitätsanbieter. Falls Ihr Identitätsanbieter es unterstützt, verwenden Sie bevorzugt `client_auth_method = "private_key_jwt"`. Dabei signiert der Schlüssel der Umgebung die Client-Assertion, und es gibt überhaupt kein Geheimnis.

## Rotation

Der Provider kann das Geheimnis nicht zurücklesen und kann daher eine Änderung daran nicht erkennen. Er sendet `client_secret_wo` beim Anlegen der Ressource und immer dann, wenn sich `client_secret_wo_version` ändert. Zum Rotieren setzen Sie das neue Geheimnis ein und erhöhen die Version in derselben Änderung.

`client_secret_expires_at` ist ein Hinweis darauf, wann der Identitätsanbieter das Geheimnis ungültig macht. Die API schreibt diesen Wert nur zusammen mit dem Geheimnis. Ändern Sie ihn daher in derselben Änderung wie die Version.

## Regeln, die bei der Planung geprüft werden

| Regel | Grund |
|---|---|
| `client_secret_wo` ist bei `private_key_jwt` nicht zulässig. | Diese Methode verwendet kein Geheimnis; ein Wechsel zu ihr löscht das gespeicherte Geheimnis. |
| Eine `client_secret_*`-Methode benötigt beim Anlegen `client_secret_wo` und eine neue Version, wenn kein Geheimnis gespeichert ist. | Der Identitätsanbieter würde die Token-Anfrage ablehnen. |
| `sp_host` kann nach dem ersten Schreiben nicht mehr geändert werden. | Der Callback wird beim ersten Schreiben der Konfiguration festgelegt. |
| `entra_tenant_id` ist bei `provider_profile = "entra"` erforderlich und nur dort zulässig. | Die API-Regel. |
| `client_secret_expires_at` ist UTC mit ganzen Sekunden, zum Beispiel `2027-01-31T00:00:00Z`. | Die API gibt den Wert in dieser Form zurück; eine andere Form würde bei jeder Planung einen Unterschied anzeigen. |

## Import und Zerstören

Importieren Sie mit der Verbindungs-ID. Die API gibt `sp_host`, `entra_tenant_id` und das Geheimnis nicht zurück. Deshalb schreibt die nächste Planung die Konfiguration einmalig mit den Werten Ihrer Konfiguration.

Die API kennt für diese Konfiguration kein Löschen. Das Zerstören der Ressource entfernt sie nur aus dem State. Die Konfiguration wird zusammen mit ihrer Verbindung gelöscht.
