keenauth_connection_oidc_config
keenauth_connection_oidc_config リソースは、エンタープライズ OIDC 接続のリライングパーティー設定を行います。設定対象は、ID プロバイダの発行者、そこに登録されたクライアント ID、クライアント認証方式、プロバイダプロフィール、クライアントシークレットです。
クライアントシークレットは書き込み専用です
client_secret_wo は書き込み専用の引数です。プロバイダはこの値を API に送信しますが、state やプランファイルには書き込まず、API からも返されません。書き込み専用の引数には OpenTofu 1.11 または Terraform 1.11 以降が必要です。それより古いバージョンでは、何も送信される前に構成が拒否されます。その場合は代わりに keenauth connections oidc put でシークレットを設定してください。
OpenTofu がプランにもシークレットを保存しないように、シークレットはエフェメラル変数から指定してください。
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
}
redirect_uri(https://<sp_host>/sso/<connection_id>/callback)は ID プロバイダに登録してください。ID プロバイダが対応している場合は、client_auth_method = "private_key_jwt" を推奨します。この場合、環境の鍵がクライアントアサーションに署名するため、シークレットは一切不要になります。
ローテーション
プロバイダはシークレットを読み戻せないため、シークレットの変更を検知できません。プロバイダが client_secret_wo を送信するのは、リソースの作成時と client_secret_wo_version が変更されたときです。ローテーションするには、新しいシークレットを設定し、バージョンを増やす変更を同じ変更内で行ってください。
client_secret_expires_at は、ID プロバイダがシークレットを無効にする時期を示すリマインダーです。API はシークレットと同時にのみこの値を書き込むため、バージョンと同じ変更内で変更してください。
プラン時に確認されるルール
| ルール | 理由 |
|---|---|
private_key_jwt と併用した場合、client_secret_wo は使用できません。 |
この方式はシークレットを使用しないため、切り替えると保存されたシークレットが削除されます。 |
client_secret_* 方式では、作成時に client_secret_wo が必要です。また、シークレットが保存されていない場合は新しいバージョンが必要です。 |
ID プロバイダがトークンリクエストを拒否するためです。 |
sp_host は最初の書き込み後に変更できません。 |
コールバックは、設定が最初に書き込まれた時点で固定されるためです。 |
provider_profile = "entra" の場合は entra_tenant_id が必須で、この場合のみ使用できます。 |
API のルールです。 |
client_secret_expires_at は、秒単位まで指定した UTC 形式(例: 2027-01-31T00:00:00Z)で指定してください。 |
API はこの形式で値を返すため、別の形式を指定すると、プランのたびに差分が表示されます。 |
インポートと削除
接続 ID を指定してインポートします。API は sp_host、entra_tenant_id、シークレットを返さないため、次のプランで、構成内の値を使用して設定が一度書き込まれます。
この設定に対して API には削除操作がありません。リソースを削除すると state から削除されるだけで、設定は接続と一緒に削除されます。