88 lines
1.8 KiB
HCL
88 lines
1.8 KiB
HCL
terraform {
|
|
required_providers {
|
|
fusionauth = {
|
|
source = "FusionAuth/fusionauth"
|
|
version = "0.1.111"
|
|
}
|
|
}
|
|
}
|
|
provider "fusionauth" {
|
|
api_key = var.fusionauth_api_key
|
|
host = var.fusionauth_uri
|
|
}
|
|
|
|
resource "random_password" "client_secret" {
|
|
length = 32
|
|
special = true
|
|
}
|
|
|
|
resource "fusionauth_application" "app" {
|
|
depends_on = [var.wait_on]
|
|
|
|
tenant_id = var.tenant_id
|
|
name = var.name
|
|
|
|
lambda_configuration {
|
|
id_token_populate_id = var.rbac_lambda_id
|
|
}
|
|
|
|
oauth_configuration {
|
|
authorized_redirect_urls = [var.oauth_redirect_uri]
|
|
client_secret = random_password.client_secret.result
|
|
require_registration = var.oauth_require_registration
|
|
enabled_grants = var.oauth_enabled_grants
|
|
|
|
unknown_scope_policy = "Remove"
|
|
scope_handling_policy = "Strict"
|
|
|
|
provided_scope_policy {
|
|
address {
|
|
enabled = true
|
|
required = false
|
|
}
|
|
phone {
|
|
enabled = true
|
|
required = false
|
|
}
|
|
email {
|
|
enabled = true
|
|
required = true
|
|
}
|
|
profile {
|
|
enabled = true
|
|
required = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "fusionauth_application_role" "admin" {
|
|
application_id = fusionauth_application.app.oauth_configuration[0].client_id
|
|
description = "Admin"
|
|
is_default = true # NOTE: This is obviously insecure
|
|
is_super_role = true
|
|
name = "admin"
|
|
}
|
|
|
|
output "application_id" {
|
|
value = fusionauth_application.app.oauth_configuration[0].client_id
|
|
}
|
|
|
|
output "client_id" {
|
|
value = fusionauth_application.app.oauth_configuration[0].client_id
|
|
}
|
|
|
|
output "client_secret" {
|
|
value = fusionauth_application.app.oauth_configuration[0].client_secret
|
|
sensitive = true
|
|
}
|
|
|
|
output "redirect_uri" {
|
|
value = var.oauth_redirect_uri
|
|
}
|
|
|
|
output "installed" {
|
|
value = true
|
|
depends_on = [fusionauth_application.app]
|
|
}
|