public function saml_sp_Auth::login in SAML Service Provider 7.8
Same name and namespace in other branches
- 7.2 includes/saml_sp.Auth.inc \saml_sp_Auth::login()
- 7.3 includes/saml_sp.Auth.inc \saml_sp_Auth::login()
Initiates the SSO process.
Parameters
string $returnTo The target URL the user should be returned to after login.:
array $parameters Extra parameters to be added to the GET:
File
- includes/
saml_sp.Auth.inc, line 19
Class
Code
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;
}
// get this necessary information for this IdP
$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;
}
}
// record the outbound Id of the request
$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);
}