Skip to content
Snippets Groups Projects
Commit f9a926ef authored by Andreas Åkre Solberg's avatar Andreas Åkre Solberg
Browse files

Adding library file for creating ARP files for shibboleth

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1511 44740490-163a-0410-bde0-09ae8108e29a
parent fe2d2218
No related branches found
No related tags found
No related merge requests found
<?php
/*
* @author Andreas Åkre Solberg <andreas.solberg@uninett.no>
* @package simpleSAMLphp
* @version $Id$
*/
class sspmod_metarefresh_ARP {
private $metadata;
private $attributes;
private $prefix;
private $suffix;
/**
* Constructor
*
* @param
*/
public function __construct($metadata, $attributemap, $prefix, $suffix) {
$this->metadata = $metadata;
$this->prefix = $prefix;
$this->suffix = $suffix;
if (isset($attributemap)) $this->loadAttributeMap($attributemap);
}
private function loadAttributeMap($attributemap) {
$config = SimpleSAML_Configuration::getInstance();
include($config->getPathValue('attributemap', 'attributemap/') . $attributemap . '.php');
$this->attributes = $attributemap;
# print_r($attributemap); exit;
}
private function surround($name) {
$ret = '';
if (!empty($this->prefix)) $ret .= $this->prefix;
$ret .= $name;
if (!empty($this->suffix)) $ret .= $this->suffix;
return $ret;
}
private function getAttributeID($name) {
if (empty($this->attributes)) {
return $this->surround($name);
}
if (array_key_exists($name, $this->attributes)) {
return $this->surround($this->attributes[$name]);
}
return $this->surround($name);
}
public function getXML() {
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<AttributeFilterPolicyGroup id="urn:mace:funet.fi:haka:kalmar" xmlns="urn:mace:shibboleth:2.0:afp"
xmlns:basic="urn:mace:shibboleth:2.0:afp:mf:basic" xmlns:saml="urn:mace:shibboleth:2.0:afp:mf:saml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp classpath:/schema/shibboleth-2.0-afp.xsd
urn:mace:shibboleth:2.0:afp:mf:basic classpath:/schema/shibboleth-2.0-afp-mf-basic.xsd
urn:mace:shibboleth:2.0:afp:mf:saml classpath:/schema/shibboleth-2.0-afp-mf-saml.xsd">
';
foreach($this->metadata AS $metadata) {
#$print_r($metadata); exit;
$xml .= $this->getEntryXML($metadata['metadata']);
}
$xml .= '</AttributeFilterPolicyGroup>';
return $xml;
}
private function getEntryXML($entry) {
$entityid = $entry['entityid'];
return ' <AttributeFilterPolicy id="' . $entityid . '">
<PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="' . $entityid . '" />
' . $this->getEntryXMLcontent($entry) . '
</AttributeFilterPolicy>
';
}
private function getEntryXMLcontent($entry) {
$ids = array();
if (!array_key_exists('attributes', $entry))
return '';
$ret = '';
foreach($entry['attributes'] AS $a) {
$ret .= ' <AttributeRule attributeID="' . $this->getAttributeID($a) . '">
<PermitValueRule xsi:type="basic:ANY" />
</AttributeRule>
';
}
return $ret;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment