Skip to main content

Resources

Password Credential

Resource: microsoft365_graph_beta_applications_application_password_credential

Certificate Credential

Resource: microsoft365_graph_beta_applications_application_certificate_credential

Federated Identity

Resource: microsoft365_graph_beta_applications_application_federated_identity_credential

Password Credential (Client Secret)

resource "microsoft365_graph_beta_applications_application_password_credential" "secret" {
  application_id = microsoft365_graph_beta_applications_application.app.id
  display_name   = "Terraform-managed secret"
  end_date_time  = "2025-12-31T23:59:59Z"
}

# Output the secret value (sensitive)
output "client_secret" {
  value     = microsoft365_graph_beta_applications_application_password_credential.secret.secret_text
  sensitive = true
}

Certificate Credential

resource "microsoft365_graph_beta_applications_application_certificate_credential" "cert" {
  application_id = microsoft365_graph_beta_applications_application.app.id
  display_name   = "Production Certificate"
  
  key        = filebase64("path/to/certificate.cer")
  type       = "AsymmetricX509Cert"
  usage      = "Verify"
  end_date_time = "2025-12-31T23:59:59Z"
}

Federated Identity Credential

For workload identity federation (GitHub Actions, Azure, etc.):
resource "microsoft365_graph_beta_applications_application_federated_identity_credential" "github" {
  application_id = microsoft365_graph_beta_applications_application.app.id
  
  display_name = "GitHub Actions"
  description  = "Federated credential for GitHub Actions"
  
  audiences = ["api://AzureADTokenExchange"]
  issuer    = "https://token.actions.githubusercontent.com"
  subject   = "repo:organization/repository:ref:refs/heads/main"
}

Import Syntax

terraform import microsoft365_graph_beta_applications_application_password_credential.secret <app-id>/<key-id>

terraform import microsoft365_graph_beta_applications_application_certificate_credential.cert <app-id>/<key-id>

terraform import microsoft365_graph_beta_applications_application_federated_identity_credential.fed <app-id>/<credential-id>

Best Practices

Client secrets are sensitive values. Always mark outputs as sensitive and store them securely.
Set expiry dates and implement automated rotation processes.
Certificates are more secure than client secrets for production workloads.
For supported platforms, use federated credentials instead of secrets.

Build docs developers (and LLMs) love