From 4ee314fbb7ec8166eda91f4901cbf550ba911809 Mon Sep 17 00:00:00 2001
From: Malte Finsterwalder <malte@holi.team>
Date: Thu, 24 Aug 2023 10:50:57 +0200
Subject: [PATCH] HOLI-5652 pull JWT public key from environment/secret

---
 .envrc.local.template                       |  4 ++++
 data/homeserver.yaml.template               | 15 +--------------
 terraform/environments/deployment_server.tf |  9 +++++++++
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/.envrc.local.template b/.envrc.local.template
index 62ef3c2..1610981 100644
--- a/.envrc.local.template
+++ b/.envrc.local.template
@@ -26,3 +26,7 @@ export HOLI_CHAT_MACAROON_SECRET_KEY=
 
 # ip range used within the docker-compose container, needs to be unblocked in order for Synapse to be able to resolve Sygnal
 export HOLI_CHAT_IP_RANGE_WHITELIST="- '172.16.0.0/12'"
+
+# can be downloaded from ORY https://dev-auth.holi.social/.well-known/jwks.json (for production: https://auth.holi.social/.well-known/jwks.json)
+# this is the ORY staging keyset
+export HOLI_CHAT_ORY_PUBLIC_JWT_KEYS='{"keys":[{"use": "sig", "kty": "RSA", "kid": "147ad542-5980-4a1a-bb23-b163b731a3cc", "alg": "RS256", "n": "xOYw-BTlL7EVScqYqxwUubSWY_6FEMcO88wXIxvnLTN7ldgvxocCfgWoM15oq5nwdCe3v3z_hoBY9nPeqYEYyN2Axz1OhKzvzPSy5_lAJfYMpIiaYpYFYvrR5L7QnOwdUi6QNzXnZS6-gGqQz6mTNpFpEcoo313eznhkMq9w72bDYHobjdsuSUGd_qF3QnWC9pn9f4xprwErJIdPU-jSjKwA7T1NWuB2z0SbAI2ScX2MXBNi3aZUJpYivWHWi90l76_XbgNszAveY2vj05QV7E2nivLsmBdW8Y3OtLTtjnRT8kNOkCPYoSsH8Pv1kGvEjvlJNmvK8AJufjVgiChUQm5xwce77Jp3Zzwb47vUt4Y4ZLY8kBOmLsF7nESZuUz3fA8C3-dTdj1RKrzdzcho8puUGZHEPgYSXc2PVeA6mdayn3gc6dlo_sKy8ysDAQwBI68YZJUNxYBPnpXc0ODU0K972TB-Bg6hbLMc6l24anLLza81wMm_H5h7DAgbRTGdFAGE3Wy75Jv0-ngso5I5aTG5DAkSHxNCbBwtIV-eh0aH_E2KS9xHAYnd1gfoiqB83JxgGLjeJDOA8turZnJkRuFh7tMq2MBFShzwr9EBsIKVfYi57K22U19GXVenvOxdQMxNofxhihM-yqawppZAecarLahHP570RpbBQsTcCWk", "e": "AQAB"}]}'
diff --git a/data/homeserver.yaml.template b/data/homeserver.yaml.template
index db174d6..a274975 100644
--- a/data/homeserver.yaml.template
+++ b/data/homeserver.yaml.template
@@ -48,20 +48,7 @@ sso:
 
 jwt_config:
   enabled: true
-  secret:
-    {
-      "keys":
-        [
-          {
-            "use": "sig",
-            "kty": "RSA",
-            "kid": "147ad542-5980-4a1a-bb23-b163b731a3cc",
-            "alg": "RS256",
-            "n": "xOYw-BTlL7EVScqYqxwUubSWY_6FEMcO88wXIxvnLTN7ldgvxocCfgWoM15oq5nwdCe3v3z_hoBY9nPeqYEYyN2Axz1OhKzvzPSy5_lAJfYMpIiaYpYFYvrR5L7QnOwdUi6QNzXnZS6-gGqQz6mTNpFpEcoo313eznhkMq9w72bDYHobjdsuSUGd_qF3QnWC9pn9f4xprwErJIdPU-jSjKwA7T1NWuB2z0SbAI2ScX2MXBNi3aZUJpYivWHWi90l76_XbgNszAveY2vj05QV7E2nivLsmBdW8Y3OtLTtjnRT8kNOkCPYoSsH8Pv1kGvEjvlJNmvK8AJufjVgiChUQm5xwce77Jp3Zzwb47vUt4Y4ZLY8kBOmLsF7nESZuUz3fA8C3-dTdj1RKrzdzcho8puUGZHEPgYSXc2PVeA6mdayn3gc6dlo_sKy8ysDAQwBI68YZJUNxYBPnpXc0ODU0K972TB-Bg6hbLMc6l24anLLza81wMm_H5h7DAgbRTGdFAGE3Wy75Jv0-ngso5I5aTG5DAkSHxNCbBwtIV-eh0aH_E2KS9xHAYnd1gfoiqB83JxgGLjeJDOA8turZnJkRuFh7tMq2MBFShzwr9EBsIKVfYi57K22U19GXVenvOxdQMxNofxhihM-yqawppZAecarLahHP570RpbBQsTcCWk",
-            "e": "AQAB",
-          },
-        ],
-    }
+  secret: ${HOLI_CHAT_ORY_PUBLIC_JWT_KEYS}
   algorithm: "RS256"
   subject_claim: "ident"
 
diff --git a/terraform/environments/deployment_server.tf b/terraform/environments/deployment_server.tf
index 7b62dcd..276be5f 100644
--- a/terraform/environments/deployment_server.tf
+++ b/terraform/environments/deployment_server.tf
@@ -106,6 +106,15 @@ resource "google_cloud_run_service" "chat_server" {
             }
           }
         }
+        env {
+          name = "HOLI_CHAT_ORY_PUBLIC_JWT_KEYS"
+          value_from {
+            secret_key_ref {
+              key  = "latest"
+              name = local.environment_name == "production" ? "HOLI_CHAT_ORY_PUBLIC_JWT_KEYS_PRODUCTION" : "HOLI_CHAT_ORY_PUBLIC_JWT_KEYS_DEVELOPMENT"
+            }
+          }
+        }
         resources {
           limits = {
             # cpu can only be scaled down to 1000m as long as container_concurrency is set to != 1
-- 
GitLab