summaryrefslogtreecommitdiffstats
path: root/lib/SAML2/AuthnRequest.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/SAML2/AuthnRequest.php')
-rw-r--r--lib/SAML2/AuthnRequest.php533
1 files changed, 0 insertions, 533 deletions
diff --git a/lib/SAML2/AuthnRequest.php b/lib/SAML2/AuthnRequest.php
deleted file mode 100644
index b536dce..0000000
--- a/lib/SAML2/AuthnRequest.php
+++ /dev/null
@@ -1,533 +0,0 @@
-<?php
-
-/**
- * Class for SAML 2 authentication request messages.
- *
- * @package simpleSAMLphp
- * @version $Id$
- */
-class SAML2_AuthnRequest extends SAML2_Request {
-
- /**
- * The options for what type of name identifier should be returned.
- *
- * @var array
- */
- private $nameIdPolicy;
-
- /**
- * Whether the Identity Provider must authenticate the user again.
- *
- * @var bool
- */
- private $forceAuthn;
-
-
- /**
- * Set to TRUE if this request is passive.
- *
- * @var bool.
- */
- private $isPassive;
-
- /**
- * The list of providerIDs in this request's scoping element
- *
- * @var array
- */
- private $IDPList = array();
-
- /**
- * The ProxyCount in this request's scoping element
- *
- * @var int
- */
- private $ProxyCount = null;
-
- /**
- * The RequesterID list in this request's scoping element
- *
- * @var array
- */
-
- private $RequesterID = array();
-
- /**
- * The URL of the asertion consumer service where the response should be delivered.
- *
- * @var string|NULL
- */
- private $assertionConsumerServiceURL;
-
-
- /**
- * What binding should be used when sending the response.
- *
- * @var string|NULL
- */
- private $protocolBinding;
-
-
- /**
- * The index of the AttributeConsumingService.
- *
- * @var int|NULL
- */
- private $attributeConsumingServiceIndex;
-
- /**
- * The index of the AssertionConsumerService.
- *
- * @var int|NULL
- */
- private $assertionConsumerServiceIndex;
-
-
- /**
- * What authentication context was requested.
- *
- * Array with the following elements.
- * - AuthnContextClassRef (required)
- * - Comparison (optinal)
- *
- * @var array
- */
- private $requestedAuthnContext;
-
- /**
- * Request extensions.
- *
- * @var array
- */
- private $extensions;
-
- /**
- * Constructor for SAML 2 authentication request messages.
- *
- * @param DOMElement|NULL $xml The input message.
- */
- public function __construct(DOMElement $xml = NULL) {
- parent::__construct('AuthnRequest', $xml);
-
- $this->nameIdPolicy = array();
- $this->forceAuthn = FALSE;
- $this->isPassive = FALSE;
-
- if ($xml === NULL) {
- return;
- }
-
- $this->forceAuthn = SAML2_Utils::parseBoolean($xml, 'ForceAuthn', FALSE);
- $this->isPassive = SAML2_Utils::parseBoolean($xml, 'IsPassive', FALSE);
-
- if ($xml->hasAttribute('AssertionConsumerServiceURL')) {
- $this->assertionConsumerServiceURL = $xml->getAttribute('AssertionConsumerServiceURL');
- }
-
- if ($xml->hasAttribute('ProtocolBinding')) {
- $this->protocolBinding = $xml->getAttribute('ProtocolBinding');
- }
-
- if ($xml->hasAttribute('AttributeConsumingServiceIndex')) {
- $this->attributeConsumingServiceIndex = (int)$xml->getAttribute('AttributeConsumingServiceIndex');
- }
-
- if ($xml->hasAttribute('AssertionConsumerServiceIndex')) {
- $this->assertionConsumerServiceIndex = (int)$xml->getAttribute('AssertionConsumerServiceIndex');
- }
-
- $nameIdPolicy = SAML2_Utils::xpQuery($xml, './saml_protocol:NameIDPolicy');
-
- if (!empty($nameIdPolicy)) {
- $nameIdPolicy = $nameIdPolicy[0];
- if ($nameIdPolicy->hasAttribute('Format')) {
- $this->nameIdPolicy['Format'] = $nameIdPolicy->getAttribute('Format');
- }
- if ($nameIdPolicy->hasAttribute('SPNameQualifier')) {
- $this->nameIdPolicy['SPNameQualifier'] = $nameIdPolicy->getAttribute('SPNameQualifier');
- }
- if ($nameIdPolicy->hasAttribute('AllowCreate')) {
- $this->nameIdPolicy['AllowCreate'] = SAML2_Utils::parseBoolean($nameIdPolicy, 'AllowCreate', FALSE);
- }
- }
-
- $requestedAuthnContext = SAML2_Utils::xpQuery($xml, './saml_protocol:RequestedAuthnContext');
- if (!empty($requestedAuthnContext)) {
- $requestedAuthnContext = $requestedAuthnContext[0];
-
- $rac = array(
- 'AuthnContextClassRef' => array(),
- 'Comparison' => 'exact',
- );
-
- $accr = SAML2_Utils::xpQuery($requestedAuthnContext, './saml_assertion:AuthnContextClassRef');
- foreach ($accr as $i) {
- $rac['AuthnContextClassRef'][] = trim($i->textContent);
- }
-
- if ($requestedAuthnContext->hasAttribute('Comparison')) {
- $rac['Comparison'] = $requestedAuthnContext->getAttribute('Comparison');
- }
-
- $this->requestedAuthnContext = $rac;
- }
-
- $scoping = SAML2_Utils::xpQuery($xml, './saml_protocol:Scoping');
- if (!empty($scoping)) {
- $scoping =$scoping[0];
-
- if ($scoping->hasAttribute('ProxyCount')) {
- $this->ProxyCount = (int)$scoping->getAttribute('ProxyCount');
- }
- $idpEntries = SAML2_Utils::xpQuery($scoping, './saml_protocol:IDPList/saml_protocol:IDPEntry');
-
- foreach($idpEntries as $idpEntry) {
- if (!$idpEntry->hasAttribute('ProviderID')) {
- throw new Exception("Could not get ProviderID from Scoping/IDPEntry element in AuthnRequest object");
- }
- $this->IDPList[] = $idpEntry->getAttribute('ProviderID');
- }
-
- $requesterIDs = SAML2_Utils::xpQuery($scoping, './saml_protocol:RequesterID');
- foreach ($requesterIDs as $requesterID) {
- $this->RequesterID[] = trim($requesterID->textContent);
- }
-
- }
-
- $this->extensions = SAML2_XML_samlp_Extensions::getList($xml);
- }
-
-
- /**
- * Retrieve the NameIdPolicy.
- *
- * @see SAML2_AuthnRequest::setNameIdPolicy()
- * @return array The NameIdPolicy.
- */
- public function getNameIdPolicy() {
- return $this->nameIdPolicy;
- }
-
-
- /**
- * Set the NameIDPolicy.
- *
- * This function accepts an array with the following options:
- * - 'Format'
- * - 'SPNameQualifier'
- * - 'AllowCreate'
- *
- * @param array $nameIdPolicy The NameIDPolicy.
- */
- public function setNameIdPolicy(array $nameIdPolicy) {
-
- $this->nameIdPolicy = $nameIdPolicy;
- }
-
-
- /**
- * Retrieve the value of the ForceAuthn attribute.
- *
- * @return bool The ForceAuthn attribute.
- */
- public function getForceAuthn() {
- return $this->forceAuthn;
- }
-
-
- /**
- * Set the value of the ForceAuthn attribute.
- *
- * @param bool $forceAuthn The ForceAuthn attribute.
- */
- public function setForceAuthn($forceAuthn) {
- assert('is_bool($forceAuthn)');
-
- $this->forceAuthn = $forceAuthn;
- }
-
-
- /**
- * Retrieve the value of the IsPassive attribute.
- *
- * @return bool The IsPassive attribute.
- */
- public function getIsPassive() {
- return $this->isPassive;
- }
-
-
- /**
- * Set the value of the IsPassive attribute.
- *
- * @param bool $isPassive The IsPassive attribute.
- */
- public function setIsPassive($isPassive) {
- assert('is_bool($isPassive)');
-
- $this->isPassive = $isPassive;
- }
-
-
- /**
- * This function sets the scoping for the request
- * See Core 3.4.1.2 for the definition of scoping
- * Currently we only support an IDPList of idpEntries
- * and only the required ProviderID in an IDPEntry
- * $providerIDs is an array of Entity Identifiers
- *
- */
- public function setIDPList($IDPList) {
- assert('is_array($IDPList)');
- $this->IDPList = $IDPList;
- }
-
-
- /**
- * This function retrieves the list of providerIDs from this authentication request.
- * Currently we only support a list of ipd ientity id's.
- * @return The list of idpidentityids from the request
- */
-
- public function getIDPList() {
- return $this->IDPList;
- }
-
- public function setProxyCount($ProxyCount) {
- assert('is_int($ProxyCount)');
- $this->ProxyCount = $ProxyCount;
- }
-
- public function getProxyCount() {
- return $this->ProxyCount;
- }
-
- public function setRequesterID(array $RequesterID) {
- $this->RequesterID = $RequesterID;
- }
-
- public function getRequesterID() {
- return $this->RequesterID;
- }
-
- /**
- * Retrieve the value of the AssertionConsumerServiceURL attribute.
- *
- * @return string|NULL The AssertionConsumerServiceURL attribute.
- */
- public function getAssertionConsumerServiceURL() {
- return $this->assertionConsumerServiceURL;
- }
-
-
- /**
- * Set the value of the AssertionConsumerServiceURL attribute.
- *
- * @param string|NULL $assertionConsumerServiceURL The AssertionConsumerServiceURL attribute.
- */
- public function setAssertionConsumerServiceURL($assertionConsumerServiceURL) {
- assert('is_string($assertionConsumerServiceURL) || is_null($assertionConsumerServiceURL)');
-
- $this->assertionConsumerServiceURL = $assertionConsumerServiceURL;
- }
-
-
- /**
- * Retrieve the value of the ProtocolBinding attribute.
- *
- * @return string|NULL The ProtocolBinding attribute.
- */
- public function getProtocolBinding() {
- return $this->protocolBinding;
- }
-
-
- /**
- * Set the value of the ProtocolBinding attribute.
- *
- * @param string $protocolBinding The ProtocolBinding attribute.
- */
- public function setProtocolBinding($protocolBinding) {
- assert('is_string($protocolBinding) || is_null($protocolBinding)');
-
- $this->protocolBinding = $protocolBinding;
- }
-
- /**
- * Retrieve the value of the AttributeConsumingServiceIndex attribute.
- *
- * @return int|NULL The AttributeConsumingServiceIndex attribute.
- */
- public function getAttributeConsumingServiceIndex() {
- return $this->attributeConsumingServiceIndex;
- }
-
-
- /**
- * Set the value of the AttributeConsumingServiceIndex attribute.
- *
- * @param int|NULL $attributeConsumingServiceIndex The AttributeConsumingServiceIndex attribute.
- */
- public function setAttributeConsumingServiceIndex($attributeConsumingServiceIndex) {
- assert('is_int($attributeConsumingServiceIndex) || is_null($attributeConsumingServiceIndex)');
-
- $this->attributeConsumingServiceIndex = $attributeConsumingServiceIndex;
- }
-
-
- /**
- * Retrieve the value of the AssertionConsumerServiceIndex attribute.
- *
- * @return int|NULL The AssertionConsumerServiceIndex attribute.
- */
- public function getAssertionConsumerServiceIndex() {
- return $this->assertionConsumerServiceIndex;
- }
-
-
- /**
- * Set the value of the AssertionConsumerServiceIndex attribute.
- *
- * @param int|NULL $assertionConsumerServiceIndex The AssertionConsumerServiceIndex attribute.
- */
- public function setAssertionConsumerServiceIndex($assertionConsumerServiceIndex) {
- assert('is_int($assertionConsumerServiceIndex) || is_null($assertionConsumerServiceIndex)');
-
- $this->assertionConsumerServiceIndex = $assertionConsumerServiceIndex;
- }
-
-
- /**
- * Retrieve the RequestedAuthnContext.
- *
- * @return array|NULL The RequestedAuthnContext.
- */
- public function getRequestedAuthnContext() {
- return $this->requestedAuthnContext;
- }
-
-
- /**
- * Set the RequestedAuthnContext.
- *
- * @param array|NULL $requestedAuthnContext The RequestedAuthnContext.
- */
- public function setRequestedAuthnContext($requestedAuthnContext) {
- assert('is_array($requestedAuthnContext) || is_null($requestedAuthnContext)');
-
- $this->requestedAuthnContext = $requestedAuthnContext;
- }
-
-
- /**
- * Retrieve the Extensions.
- *
- * @return SAML2_XML_samlp_Extensions.
- */
- public function getExtensions() {
- return $this->extensions;
- }
-
-
- /**
- * Set the Extensions.
- *
- * @param array|NULL $extensions The Extensions.
- */
- public function setExtensions($extensions) {
- assert('is_array($extensions) || is_null($extensions)');
-
- $this->extensions = $extensions;
- }
-
-
- /**
- * Convert this authentication request to an XML element.
- *
- * @return DOMElement This authentication request.
- */
- public function toUnsignedXML() {
-
- $root = parent::toUnsignedXML();
-
- if ($this->forceAuthn) {
- $root->setAttribute('ForceAuthn', 'true');
- }
-
- if ($this->isPassive) {
- $root->setAttribute('IsPassive', 'true');
- }
-
- if ($this->assertionConsumerServiceIndex !== NULL) {
- $root->setAttribute('AssertionConsumerServiceIndex', $this->assertionConsumerServiceIndex);
- } else {
- if ($this->assertionConsumerServiceURL !== NULL) {
- $root->setAttribute('AssertionConsumerServiceURL', $this->assertionConsumerServiceURL);
- }
- if ($this->protocolBinding !== NULL) {
- $root->setAttribute('ProtocolBinding', $this->protocolBinding);
- }
- }
-
- if ($this->attributeConsumingServiceIndex !== NULL) {
- $root->setAttribute('AttributeConsumingServiceIndex', $this->attributeConsumingServiceIndex);
- }
-
- if (!empty($this->nameIdPolicy)) {
- $nameIdPolicy = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'NameIDPolicy');
- if (array_key_exists('Format', $this->nameIdPolicy)) {
- $nameIdPolicy->setAttribute('Format', $this->nameIdPolicy['Format']);
- }
- if (array_key_exists('SPNameQualifier', $this->nameIdPolicy)) {
- $nameIdPolicy->setAttribute('SPNameQualifier', $this->nameIdPolicy['SPNameQualifier']);
- }
- if (array_key_exists('AllowCreate', $this->nameIdPolicy) && $this->nameIdPolicy['AllowCreate']) {
- $nameIdPolicy->setAttribute('AllowCreate', 'true');
- }
- $root->appendChild($nameIdPolicy);
- }
-
- $rac = $this->requestedAuthnContext;
- if (!empty($rac) && !empty($rac['AuthnContextClassRef'])) {
- $e = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'RequestedAuthnContext');
- $root->appendChild($e);
- if (isset($rac['Comparison']) && $rac['Comparison'] !== 'exact') {
- $e->setAttribute('Comparison', $rac['Comparison']);
- }
- foreach ($rac['AuthnContextClassRef'] as $accr) {
- SAML2_Utils::addString($e, SAML2_Const::NS_SAML, 'AuthnContextClassRef', $accr);
- }
- }
-
- if (!empty($this->extensions)) {
- SAML2_XML_samlp_Extensions::addList($root, $this->extensions);
- }
-
- if ($this->ProxyCount !== null || count($this->IDPList) > 0 || count($this->RequesterID) > 0) {
- $scoping = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'Scoping');
- $root->appendChild($scoping);
- if ($this->ProxyCount !== null) {
- $scoping->setAttribute('ProxyCount', $this->ProxyCount);
- }
- if (count($this->IDPList) > 0) {
- $idplist = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'IDPList');
- foreach ($this->IDPList as $provider) {
- $idpEntry = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'IDPEntry');
- $idpEntry->setAttribute('ProviderID', $provider);
- $idplist->appendChild($idpEntry);
- }
- $scoping->appendChild($idplist);
- }
- if (count($this->RequesterID) > 0) {
- SAML2_Utils::addStrings($scoping, SAML2_Const::NS_SAMLP, 'RequesterID', FALSE, $this->RequesterID);
- }
- }
-
- return $root;
- }
-
-}
-
-
-?> \ No newline at end of file