Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 28 additions & 3 deletions terraform/platform/dns/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -474,17 +474,37 @@ resource "aws_acm_certificate_validation" "sso_redirect" {
validation_record_fqdns = [for record in aws_route53_record.sso_redirect_cert_validation : record.fqdn]
}

# CloudFront distribution — forwards to S3 website redirect
# CloudFront Function — redirects all requests to the SSO portal with /start path
resource "aws_cloudfront_function" "sso_redirect" {
name = "${var.project}-sso-redirect"
runtime = "cloudfront-js-2.0"
publish = true
code = <<-EOF
function handler(event) {
return {
statusCode: 301,
statusDescription: 'Moved Permanently',
headers: {
location: { value: '${var.sso_portal_url}' },
'cache-control': { value: 'max-age=86400' }
}
};
}
EOF
}

# CloudFront distribution — uses function for redirect (not S3)
resource "aws_cloudfront_distribution" "sso_redirect" {
enabled = true
aliases = ["aws.javabin.no"]
comment = "aws.javabin.no → SSO portal redirect"
is_ipv6_enabled = true
price_class = "PriceClass_100"

# Dummy origin — CloudFront requires one but the function handles everything
origin {
domain_name = aws_s3_bucket_website_configuration.sso_redirect.website_endpoint
origin_id = "s3-redirect"
origin_id = "dummy"

custom_origin_config {
http_port = 80
Expand All @@ -495,7 +515,7 @@ resource "aws_cloudfront_distribution" "sso_redirect" {
}

default_cache_behavior {
target_origin_id = "s3-redirect"
target_origin_id = "dummy"
viewer_protocol_policy = "redirect-to-https"
allowed_methods = ["GET", "HEAD"]
cached_methods = ["GET", "HEAD"]
Expand All @@ -511,6 +531,11 @@ resource "aws_cloudfront_distribution" "sso_redirect" {
min_ttl = 0
default_ttl = 86400
max_ttl = 86400

function_association {
event_type = "viewer-request"
function_arn = aws_cloudfront_function.sso_redirect.arn
}
}

viewer_certificate {
Expand Down