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:

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.