diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index c141a5c92e8e14a635d0856854239e242c26873f..424e2438c0609f00c1c5e063d4c732b95dc9ea8c 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -478,6 +478,9 @@ class SimpleSAML_Metadata_SAMLParser {
 		if (array_key_exists('attributes', $spd)) {
 			$ret['attributes'] = $spd['attributes'];
 		}
+		if (array_key_exists('attributes.required', $spd)) {
+			$ret['attributes.required'] = $spd['attributes.required'];
+		}
 		if (array_key_exists('attributes.NameFormat', $spd)) {
 			$ret['attributes.NameFormat'] = $spd['attributes.NameFormat'];
 		}
@@ -1098,6 +1101,10 @@ class SimpleSAML_Metadata_SAMLParser {
 				$sp['attributes.required'][] = $attrname;
 			}
 
+			if ($child->isRequired !== NULL && $child->isRequired === TRUE) {
+				$sp['attributes.required'][] = $attrname;
+			}
+
 			if ($child->NameFormat !== NULL) {
 				$attrformat = $child->NameFormat;
 			} else {
diff --git a/modules/saml/www/sp/metadata.php b/modules/saml/www/sp/metadata.php
index 1dde24284bbd5aa6f8f5b5a7c7f75a6f635f5c7f..173c7156935e4269ec728a71f5bc72ab1df729e4 100644
--- a/modules/saml/www/sp/metadata.php
+++ b/modules/saml/www/sp/metadata.php
@@ -133,6 +133,10 @@ if ($name !== NULL && !empty($attributes)) {
 	$metaArray20['name'] = $name;
 	$metaArray20['attributes'] = $attributes;
 	$metaArray20['attributes.required'] = $spconfig->getArray('attributes.required', array());
+
+	if (empty($metaArray20['attributes.required'])) {
+	    unset($metaArray20['attributes.required']);
+	}
 	
 	$description = $spconfig->getArray('description', NULL);
 	if ($description !== NULL) {
@@ -184,6 +188,11 @@ if (count($keys) === 1) {
 	$metaArray20['keys'] = $keys;
 }
 
+// add EntityAttributes extension
+if ($spconfig->hasValue('EntityAttributes')) {
+	$metaArray20['EntityAttributes'] = $spconfig->getArray('EntityAttributes');
+}
+
 // add UIInfo extension
 if ($spconfig->hasValue('UIInfo')) {
 	$metaArray20['UIInfo'] = $spconfig->getArray('UIInfo');
@@ -215,7 +224,6 @@ $metaBuilder->addOrganizationInfo($metaArray20);
 
 $xml = $metaBuilder->getEntityDescriptorText();
 
-unset($metaArray20['attributes.required']);
 unset($metaArray20['UIInfo']);
 unset($metaArray20['metadata-set']);
 unset($metaArray20['entityid']);