diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php
index 93bc28b51b46435ba226035ccf7423e6e78e3d87..4315778bf3a92edcbb8b0e7827ceb00f582a25c9 100644
--- a/www/saml2/idp/metadata.php
+++ b/www/saml2/idp/metadata.php
@@ -242,9 +242,15 @@ try {
         $t->data['metadataflat'] = htmlspecialchars($metaflat);
         $t->show();
     } else {
+        $etag = '"' . hash('sha256', $metaxml) . '"';
+        if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
+            if ($_SERVER['HTTP_IF_NONE_MATCH'] === $etag) {
+                header("HTTP/1.1 304 Not Modified");
+                exit(0);
+            }
+        }
         header('Content-Type: application/samlmetadata+xml');
-        header('ETag: "' . hash('sha256', $metaxml) . '"');
-
+        header('ETag: ' . $etag);
         echo $metaxml;
         exit(0);
     }