diff --git a/templates/metadata.php b/templates/metadata.php new file mode 100644 index 0000000000000000000000000000000000000000..7f847a4eedd038ee0a4aa00f218fc0c60a72605a --- /dev/null +++ b/templates/metadata.php @@ -0,0 +1,80 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title><?php echo $data['header']; ?></title> + +<style type="text/css"> + +/* these styles are in the head of this page because this is a unique page */ + +/* THE BIG GUYS */ +* {margin:0;padding:0} +body {text-align:center;padding: 20px 0;background: #222;color:#333;font:83%/1.5 arial,tahoma,verdana,sans-serif} +img {border:none;display:block} +hr {margin: 1em 0;background:#eee;height:1px;color:#eee;border:none;clear:both} + +/* LINKS */ +a,a:link,a:link,a:link,a:hover {font-weight:bold;background:transparent;text-decoration:underline;cursor:pointer} +a:link {color:#c00} +a:visited {color:#999} +a:hover,a:active {color:#069} + +/* LISTS */ +ul {margin: .3em 0 1.5em 2em} + ul.related {margin-top:-1em} +li {margin-left:2em} +dt {font-weight:bold} +#wrap {border: 1px solid #fff;position:relative;background:#fff;width:600px;margin: 0 auto;text-align:left} +#header {background: #666 url("/<?php echo $data['baseurlpath']; ?>resources/sprites.gif") repeat-x 0 100%;margin: 0 0 25px;padding: 0 0 8px} +#header h1 {color:#fff;font-size: 145%;padding:20px 20px 12px} +#poweredby {width:96px;height:63px;position:absolute;top:0;right:0} +#content {padding: 0 20px} + +/* TYPOGRAPHY */ +p, ul, ol {margin: 0 0 1.5em} +h1, h2, h3, h4, h5, h6 {letter-spacing: -1px;font-family: arial,verdana,sans-serif;margin: 1.2em 0 .3em;color:#000;border-bottom: 1px solid #eee;padding-bottom: .1em} +h1 {font-size: 196%;margin-top:0;border:none} +h2 {font-size: 136%} +h3 {font-size: 126%} +h4 {font-size: 116%} +h5 {font-size: 106%} +h6 {font-size: 96%} + +.old {text-decoration:line-through} +</style> +</head> +<body> + +<div id="wrap"> + + <div id="header"> + <h1>simpleSAMLphp status page</h1> + <div id="poweredby"><img src="/<?php echo $data['baseurlpath']; ?>resources/icons/bino.png" alt="Bino" /></div> + </div> + + <div id="content"> + + <h2><?php if (isset($data['header'])) { echo $data['header']; } else { echo "Some error occured"; } ?></h2> + + <p>Here is SAML 2.0 metadata that simpleSAMLphp has generated for you. You may send this SAML 2.0 Metadata document to trusted partners to setup a trusted federation.</p> + + <h2>Metadata</h2> + + <pre style="overflow: scroll; border: 1px solid #eee; padding: 2px"><?php echo $data['metadata']; ?></pre> + + + + + <hr /> + + Copyright © 2007 <a href="http://rnd.feide.no/">Feide RnD</a> + + <hr /> + + </div> + +</div> + +</body> +</html> diff --git a/www/saml2/sp/metadata.php b/www/saml2/sp/metadata.php new file mode 100644 index 0000000000000000000000000000000000000000..ff1142ba18e29b2274bd5033306c5f52fa2c7782 --- /dev/null +++ b/www/saml2/sp/metadata.php @@ -0,0 +1,68 @@ +<?php + +require_once('../../_include.php'); + +require_once('SimpleSAML/Utilities.php'); +require_once('SimpleSAML/Session.php'); +require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/XHTML/Template.php'); + +session_start(); + +/* Load simpleSAMLphp, configuration and metadata */ +$config = SimpleSAML_Configuration::getInstance(); +$metadata = new SimpleSAML_XML_MetaDataStore($config); +$session = SimpleSAML_Session::getInstance(); + +try { + + $spmeta = isset($_GET['spentityid']) ? $_GET['spentityid'] : $metadata->getMetaDataCurrent(); + $spentityid = isset($_GET['spentityid']) ? $_GET['spentityid'] : $metadata->getMetaDataCurrentEntityID(); + + if (!$spmeta['assertionConsumerServiceURL']) throw new Exception('The following parameter is not set in your SAML 2.0 SP Hosted metadata: assertionConsumerServiceURL'); + if (!$spmeta['SingleLogOutUrl']) throw new Exception('The following parameter is not set in your SAML 2.0 SP Hosted metadata: SingleLogOutUrl'); + + $metaxml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<EntityDescriptor entityID="' . $spentityid . '" xmlns="urn:oasis:names:tc:SAML:2.0:metadata"> + + <SPSSODescriptor + AuthnRequestsSigned="false" + WantAssertionsSigned="false" + protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> + + <SingleLogoutService + Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" + Location="' . $spmeta['assertionConsumerServiceURL'] . '"/> + + <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> + + <AssertionConsumerService + index="0" + isDefault="true" + Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" + Location="' . $spmeta['SingleLogOutUrl'] . '" /> + + </SPSSODescriptor> + +</EntityDescriptor>'; + + + $et = new SimpleSAML_XHTML_Template($config, 'metadata.php'); + + $et->data['header'] = 'SAML 2.0 SP Metadata'; + $et->data['metadata'] = htmlentities($metaxml); + + $et->show(); + +} catch(Exception $exception) { + + $et = new SimpleSAML_XHTML_Template($config, 'error.php'); + + $et->data['message'] = 'Some error occured when trying to generate metadata.'; + $et->data['e'] = $exception; + + $et->show(); + +} + +?> \ No newline at end of file