keenauth_connection_oidc_config
La ressource keenauth_connection_oidc_config définit la configuration de la partie de confiance (relying party) d'une connexion OIDC d'entreprise : l'émetteur du fournisseur d'identité, l'ID client enregistré auprès de celui-ci, la méthode d'authentification du client, le profil du fournisseur et le secret client.
Le secret client est en écriture seule
client_secret_wo est un argument en écriture seule. Le provider envoie ce secret à l'API et ne l'écrit jamais dans les fichiers d'état ou de plan, et l'API ne le renvoie jamais. Les arguments en écriture seule nécessitent OpenTofu 1.11 ou Terraform 1.11 ou une version ultérieure. Une version plus ancienne rejette la configuration avant tout envoi ; dans ce cas, définissez le secret avec keenauth connections oidc put.
Fournissez le secret à partir d'une variable éphémère, afin qu'OpenTofu ne le stocke pas non plus dans le 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
}
Enregistrez redirect_uri (https://<sp_host>/sso/<connection_id>/callback) auprès du fournisseur d'identité. Si votre fournisseur d'identité le permet, privilégiez client_auth_method = "private_key_jwt" : la clé de l'environnement signe l'assertion client et aucun secret n'est nécessaire.
Rotation
Le provider ne peut pas relire le secret, il ne peut donc pas détecter une modification de celui-ci. Il envoie client_secret_wo lors de la création de la ressource, puis à chaque changement de client_secret_wo_version. Pour effectuer une rotation, remplacez le secret et augmentez la version dans la même modification.
client_secret_expires_at rappelle la date à laquelle le fournisseur d'identité invalidera le secret. L'API ne l'écrit qu'avec le secret ; modifiez-le donc dans la même modification que la version.
Règles vérifiées au moment du plan
| Règle | Motif |
|---|---|
client_secret_wo n'est pas autorisé avec private_key_jwt. |
Cette méthode n'utilise aucun secret ; y passer supprime le secret stocké. |
Une méthode client_secret_* exige client_secret_wo à la création, et une nouvelle version lorsqu'aucun secret n'est stocké. |
Le fournisseur d'identité rejetterait la requête de jeton. |
sp_host ne peut pas être modifié après la première écriture. |
Le callback est figé lors de la première écriture de la configuration. |
entra_tenant_id est obligatoire avec provider_profile = "entra" et n'est autorisé que dans ce cas. |
Règle de l'API. |
client_secret_expires_at est en UTC avec des secondes entières, par exemple 2027-01-31T00:00:00Z. |
L'API le renvoie sous cette forme ; une autre forme provoquerait une différence à chaque plan. |
Import et destruction
Importez la ressource avec l'ID de la connexion. L'API ne renvoie ni sp_host, ni entra_tenant_id, ni le secret ; le plan suivant écrira donc la configuration une fois avec les valeurs de votre configuration.
L'API ne propose pas de suppression pour cette configuration. La destruction de la ressource la retire uniquement de l'état ; la configuration est supprimée avec sa connexion.