Skip to content

Commit 1694905

Browse files
Scope parsing in metadata for SAML 2.0 IdPs
git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1206 44740490-163a-0410-bde0-09ae8108e29a
1 parent 6128084 commit 1694905

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

lib/SimpleSAML/Metadata/SAMLParser.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,10 @@ public function getMetadata20IdP() {
681681
if (array_key_exists('expire', $idp)) {
682682
$ret['expire'] = $idp['expire'];
683683
}
684-
684+
685+
if (array_key_exists('scopes', $idp))
686+
$ret['scopes'] = $idp['scopes'];
687+
685688

686689
/* Enable redirect.sign if WantAuthnRequestsSigned is enabled. */
687690
if ($idp['wantAuthnRequestsSigned']) {
@@ -769,6 +772,7 @@ private static function parseSSODescriptor($element, $expireTime) {
769772
}
770773

771774
$sd['protocols'] = self::getSupportedProtocols($element);
775+
772776

773777
/* Find all SingleLogoutService elements. */
774778
$sd['singleLogoutServices'] = array();
@@ -836,6 +840,13 @@ private function processIDPSSODescriptor($element, $expireTime) {
836840
assert('is_null($expireTime) || is_int($expireTime)');
837841

838842
$idp = self::parseSSODescriptor($element, $expireTime);
843+
844+
$extensions = SimpleSAML_Utilities::getDOMChildren($element, 'Extensions', '@md');
845+
if (!empty($extensions))
846+
$this->processExtensions($extensions[0]);
847+
848+
if (!empty($this->scopes)) $idp['scopes'] = $this->scopes;
849+
839850

840851
/* Find all SingleSignOnService elements. */
841852
$idp['singleSignOnServices'] = array();
@@ -861,7 +872,8 @@ private function processIDPSSODescriptor($element, $expireTime) {
861872
*/
862873
private function processExtensions($element) {
863874
assert('$element instanceof DOMElement');
864-
875+
876+
865877
for($i = 0; $i < $element->childNodes->length; $i++) {
866878
$child = $element->childNodes->item($i);
867879

modules/metarefresh/lib/MetaLoader.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,16 @@ public function __construct($maxcache = NULL, $maxduration = NULL) {
3333
public function loadSource($source) {
3434

3535
$entities = SimpleSAML_Metadata_SAMLParser::parseDescriptorsFile($source['src']);
36-
36+
$ca = NULL;
3737
foreach($entities as $entity) {
38-
if($source['validateFingerprint'] !== NULL) {
38+
if(array_key_exists('validateFingerprint', $source) && $source['validateFingerprint'] !== NULL) {
3939
if(!$entity->validateFingerprint($source['validateFingerprint'])) {
4040
SimpleSAML_Logger::info('Skipping "' . $entity->getEntityId() . '" - could not verify signature.' . "\n");
4141
continue;
4242
}
4343
}
4444

45+
// TODO: $ca is always null
4546
if($ca !== NULL) {
4647
if(!$entity->validateCA($ca)) {
4748
SimpleSAML_Logger::info('Skipping "' . $entity->getEntityId() . '" - could not verify certificate.' . "\n");

0 commit comments

Comments
 (0)