ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ShibWAYF Class Reference

Class ShibbolethWAYF. More...

+ Collaboration diagram for ShibWAYF:

Public Member Functions

 __construct ()
 
 is_selection ()
 
 isSelection ()
 
 is_valid_selection ()
 
 isValidSelection ()
 
 generateSelection ()
 
 redirect ()
 Redirects user to the local Shibboleth session initatiotor with already set GET arguments for the right IdP and return location. More...
 
 setSAMLCookie ()
 Sets the standard SAML domain cookie that is also used to preselect the right entry on the local wayf More...
 
 showNotice ()
 
 getIdplist ()
 
 generateCookieArray ($value)
 
 generateCookieValue (array $arr_cookie)
 
 appendCookieValue ($value, array $arr_cookie)
 

Data Fields

 $is_selection = false
 
 $is_valid_selection = false
 
 $selected_idp = '-'
 
 $idp_list = false
 

Detailed Description

Class ShibbolethWAYF.

This class handles the Home Organization selection (also called Where Are You From service) process for Shibboleth users.

Author
Fabian Schmid fs@st.nosp@m.uder.nosp@m.-raim.nosp@m.ann..nosp@m.ch

Definition at line 34 of file class.ilShibbolethWAYF.php.

Constructor & Destructor Documentation

◆ __construct()

ShibWAYF::__construct ( )

Definition at line 54 of file class.ilShibbolethWAYF.php.

References $_POST, getIdplist(), is_selection(), and is_valid_selection().

54  {
55  // Was the WAYF form submitted?
56  if (isset($_POST['home_organization_selection'])) {
57  $this->is_selection = true;
58  } else {
59  $this->is_selection = false;
60  }
61  // Was selected IdP a valid
62  $this->idp_list = $this->getIdplist();
63  if (isset($_POST['idp_selection']) AND
64  $_POST['idp_selection'] != '-' AND isset($this->idp_list[$_POST['idp_selection']])
65  ) {
66  $this->is_valid_selection = true;
67  $this->selected_idp = $_POST['idp_selection'];
68  } else {
69  $this->is_valid_selection = false;
70  }
71  }
$_POST["username"]
+ Here is the call graph for this function:

Member Function Documentation

◆ appendCookieValue()

ShibWAYF::appendCookieValue (   $value,
array  $arr_cookie 
)
Parameters
$value
$arr_cookieAppend a value to the array of IDPs
Returns
array

Definition at line 253 of file class.ilShibbolethWAYF.php.

Referenced by setSAMLCookie().

253  {
254  array_push($arr_cookie, $value);
255  $arr_cookie = array_reverse($arr_cookie);
256  $arr_cookie = array_unique($arr_cookie);
257  $arr_cookie = array_reverse($arr_cookie);
258 
259  return $arr_cookie;
260  }
+ Here is the caller graph for this function:

◆ generateCookieArray()

ShibWAYF::generateCookieArray (   $value)
Parameters
$valueGenerates an array of IDPs using the cookie value
Returns
array

Definition at line 222 of file class.ilShibbolethWAYF.php.

Referenced by generateSelection(), and setSAMLCookie().

222  {
223  $arr_cookie = explode(' ', $value);
224  $arr_cookie = array_map('base64_decode', $arr_cookie);
225 
226  return $arr_cookie;
227  }
+ Here is the caller graph for this function:

◆ generateCookieValue()

ShibWAYF::generateCookieValue ( array  $arr_cookie)
Parameters
$arr_cookieGenerate the value that is stored in the cookie using the list of IDPs
Returns
string

Definition at line 237 of file class.ilShibbolethWAYF.php.

Referenced by setSAMLCookie().

237  {
238  $arr_cookie = array_map('base64_encode', $arr_cookie);
239  $value = implode(' ', $arr_cookie);
240 
241  return $value;
242  }
+ Here is the caller graph for this function:

◆ generateSelection()

ShibWAYF::generateSelection ( )
Returns
string

Definition at line 109 of file class.ilShibbolethWAYF.php.

References $_COOKIE, $_GET, $idp_list, $lng, generateCookieArray(), and getIdplist().

109  {
110  if (! $this->idp_list) {
111  $arr_idp_list = $this->getIdplist();
112  } else {
113  $arr_idp_list = $this->idp_list;
114  }
115  $idp_cookie = $this->generateCookieArray($_COOKIE['_saml_idp']);
116  $lng = new ilLanguage($_GET["lang"]);
117  if (count($idp_cookie) > 0 AND isset($arr_idp_list[end($idp_cookie)])) {
118  $selectedIDP = end($idp_cookie);
119  $selectElement = '
120  <select name="idp_selection">
121  <option value="-">' . $lng->txt("shib_member_of") . '</option>';
122  } else {
123  $selectElement = '
124  <select name="idp_selection">
125  <option value="-" selected="selected">' . $lng->txt("shib_member_of") . '</option>';
126  }
127  foreach ($arr_idp_list as $idp_id => $idp_data) {
128  if ($idp_id == $selectedIDP) {
129  $selectElement .= '<option value="' . $idp_id . '" selected="selected">' . $idp_data[0] . '</option>';
130  } else {
131  $selectElement .= '<option value="' . $idp_id . '">' . $idp_data[0] . '</option>';
132  }
133  }
134  $selectElement .= '
135  </select>';
136 
137  return $selectElement;
138  }
$_GET["client_id"]
generateCookieArray($value)
global $lng
Definition: privfeed.php:17
$_COOKIE['ilClientId']
Definition: BPMN2Parser.php:15
language handling
+ Here is the call graph for this function:

◆ getIdplist()

ShibWAYF::getIdplist ( )
Returns
array Generate array of IdPs from ILIAS Shibboleth settings

Definition at line 197 of file class.ilShibbolethWAYF.php.

References $DIC, $idp_list, $ilSetting, and array.

Referenced by __construct(), generateSelection(), and redirect().

197  {
198  global $DIC;
199  $ilSetting = $DIC['ilSetting'];
200  $idp_list = array();
201  $idp_raw_list = explode("\n", $ilSetting->get("shib_idp_list"));
202  foreach ($idp_raw_list as $idp_line) {
203  $idp_data = explode(',', $idp_line);
204  if (isset($idp_data[2])) {
205  $idp_list[trim($idp_data[0])] = array( trim($idp_data[1]), trim($idp_data[2]) );
206  } elseif (isset($idp_data[1])) {
207  $idp_list[trim($idp_data[0])] = array( trim($idp_data[1]) );
208  }
209  }
210 
211  return $idp_list;
212  }
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $DIC
+ Here is the caller graph for this function:

◆ is_selection()

ShibWAYF::is_selection ( )
Returns
bool

Definition at line 77 of file class.ilShibbolethWAYF.php.

References isSelection().

Referenced by __construct(), and showNotice().

77  {
78  return $this->isSelection();
79  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_valid_selection()

ShibWAYF::is_valid_selection ( )
Returns
bool

Definition at line 93 of file class.ilShibbolethWAYF.php.

References isValidSelection().

Referenced by __construct(), and showNotice().

93  {
94  return $this->isValidSelection();
95  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isSelection()

ShibWAYF::isSelection ( )
Returns
bool

Definition at line 85 of file class.ilShibbolethWAYF.php.

References $is_selection.

Referenced by is_selection().

85  {
86  return $this->is_selection;
87  }
+ Here is the caller graph for this function:

◆ isValidSelection()

ShibWAYF::isValidSelection ( )
Returns
bool

Definition at line 101 of file class.ilShibbolethWAYF.php.

References $is_valid_selection.

Referenced by is_valid_selection().

101  {
103  }
+ Here is the caller graph for this function:

◆ redirect()

ShibWAYF::redirect ( )

Redirects user to the local Shibboleth session initatiotor with already set GET arguments for the right IdP and return location.

Definition at line 144 of file class.ilShibbolethWAYF.php.

References $_POST, $idp_list, $selected_idp, $target, getIdplist(), and ilUtil\redirect().

144  {
145  if (! $this->idp_list) {
146  $arr_idp_list = $this->getIdplist();
147  } else {
148  $arr_idp_list = $this->idp_list;
149  }
150  // Where to return after the authentication process
151  $target = trim(ILIAS_HTTP_PATH, '/') . '/shib_login.php?target=' . $_POST["il_target"];
152  $idp_data = $arr_idp_list[$this->selected_idp];
153  if (isset($idp_data[1])) {
154  ilUtil::redirect($idp_data[1] . '?providerId=' . urlencode($this->selected_idp) . '&target='
155  . urlencode($target));
156  } else {
157  // TODO: This has to be changed to /Shibboleth.sso/DS?entityId= for
158  // Shibbolet 2.x sometime...
159  ilUtil::redirect('/Shibboleth.sso?providerId=' . urlencode($this->selected_idp) . '&target='
160  . urlencode($target));
161  }
162  }
static redirect($a_script)
http redirect to other script
$_POST["username"]
+ Here is the call graph for this function:

◆ setSAMLCookie()

ShibWAYF::setSAMLCookie ( )

Sets the standard SAML domain cookie that is also used to preselect the right entry on the local wayf

Definition at line 168 of file class.ilShibbolethWAYF.php.

References $_COOKIE, appendCookieValue(), array, generateCookieArray(), generateCookieValue(), and time.

168  {
169  if (isset($_COOKIE['_saml_idp'])) {
170  $arr_idps = $this->generateCookieArray($_COOKIE['_saml_idp']);
171  } else {
172  $arr_idps = array();
173  }
174  $arr_idps = $this->appendCookieValue($this->selected_idp, $arr_idps);
175  setcookie('_saml_idp', $this->generateCookieValue($arr_idps), time() + (100 * 24 * 3600), '/');
176  }
generateCookieArray($value)
Create styles array
The data for the language used.
generateCookieValue(array $arr_cookie)
$_COOKIE['ilClientId']
Definition: BPMN2Parser.php:15
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
appendCookieValue($value, array $arr_cookie)
+ Here is the call graph for this function:

◆ showNotice()

ShibWAYF::showNotice ( )
Returns
string Show notice in case no IdP was selected

Definition at line 183 of file class.ilShibbolethWAYF.php.

References $_GET, $lng, is_selection(), and is_valid_selection().

183  {
184  $lng = new ilLanguage($_GET["lang"]);
185  if (! $this->is_selection() or $this->is_valid_selection()) {
186  return '';
187  } else {
188  return $lng->txt("shib_invalid_home_organization");
189  }
190  }
$_GET["client_id"]
global $lng
Definition: privfeed.php:17
language handling
+ Here is the call graph for this function:

Field Documentation

◆ $idp_list

ShibWAYF::$idp_list = false

Definition at line 51 of file class.ilShibbolethWAYF.php.

Referenced by generateSelection(), getIdplist(), and redirect().

◆ $is_selection

ShibWAYF::$is_selection = false

Definition at line 39 of file class.ilShibbolethWAYF.php.

Referenced by isSelection().

◆ $is_valid_selection

ShibWAYF::$is_valid_selection = false

Definition at line 43 of file class.ilShibbolethWAYF.php.

Referenced by isValidSelection().

◆ $selected_idp

ShibWAYF::$selected_idp = '-'

Definition at line 47 of file class.ilShibbolethWAYF.php.

Referenced by redirect().


The documentation for this class was generated from the following file: