saml_sp.Auth.inc in SAML Service Provider 7.8
File
includes/saml_sp.Auth.inc
View source
<?php
class saml_sp_Auth extends OneLogin_Saml2_Auth {
public $auth_callback;
public function setAuthCallback($callback) {
$this->auth_callback = $callback;
}
public function login($returnTo = null, $parameters = array()) {
assert('is_array($parameters)');
$settings = $this
->getSettings();
$authnRequest = new saml_sp_AuthnRequest($settings);
$samlRequest = $authnRequest
->getRequest();
$parameters['SAMLRequest'] = $samlRequest;
if (!empty($returnTo)) {
$parameters['RelayState'] = $returnTo;
}
else {
$parameters['RelayState'] = OneLogin_Saml2_Utils::getSelfRoutedURLNoQuery();
}
$security = $settings
->getSecurityData();
if (isset($security['authnRequestsSigned']) && $security['authnRequestsSigned']) {
$signature = $this
->buildRequestSignature($samlRequest, $parameters['RelayState']);
$parameters['SigAlg'] = XMLSecurityKey::RSA_SHA1;
$parameters['Signature'] = $signature;
}
$idp = (object) $settings
->getIdPData();
$all_idps = saml_sp__load_all_idps();
foreach ($all_idps as $this_idp) {
if ($this_idp->entity_id == $idp->entityId) {
$idp->machine_name = $this_idp->machine_name;
}
}
$id = $authnRequest
->getId();
saml_sp__track_request($id, $idp, $this->auth_callback);
if (variable_get('saml_sp__debug', FALSE) && module_exists('devel')) {
return t('This is a debug page, <a href="!url">you can proceed by clicking this link.</a>', array(
'!url' => url($this
->getSSOurl(), array(
'query' => $parameters,
)),
));
}
$this
->redirectTo($this
->getSSOurl(), $parameters);
}
}