Single Sign-On (SSO)

Anmeldung
Abmeldung
Service-Provider (SP) außerhalb des ZID

Aus Sicherheitsgründen (z. B. wegen Phishing) baut der Zentrale Informatikdienst für die zentralen webbasierten Systeme die Verwendung von Single Sign-On (ein Mal anmelden und in jedem verbundenen System identifiziert sein) bzw. Single Sign-In (für jedes System auf der selben - bekannten - Seite anmelden) laufend aus, die User sollten ihr Kennwort nur mehr an einer einzigen Stelle eingeben und sehr aufmerksam reagieren, wenn sie auf anderen Seiten zur Eingabe des Kennworts aufgefordert werden.
Obwohl uns auch die Risiken bewußt sind – so gibt es z. B. keine einheitliche Lösung für ein „Single Log-out“ und die einzelnen Systeme können unterschiedlich lange gültige Sessions haben (d. h. in einem System bleibt man vielleicht 8 Stunden lang angemeldet und in einem anderen nur 2) – haben wir uns für diese Variante entschieden und im Endausbau soll es für zentrale Dienste nur mehr diese Lösung geben, die auch für föderierte Dienste (z. B. die Bestellung von E-Mail-Zertifikaten, die Teilnahme an der ubook-Aktion, die Anmeldung bei Foodle oder generell eduGAIN) zum Einsatz kommt.

Unsere zentralen Services werden die Sitzungen (sessions) für 9 Stunden offen lassen, erst danach wird ein neuerliches Anmelden erzwungen, andere Systeme können - wie oben erwänt - auch andere Zeiten setzen oder überhaupt eine Neu-Anmeldung erzwingen, das können wir zentral nicht beeinflussen.

Umgesetzt ist SSO mit Shibboleth, wobei die Handy-Signatur integriert wurde, wodurch jedes angeschlossene System auch automatisch eine 2-Faktor-Authentifizierung bekommt, was die Sicherheit z. B. beim Einstieg über fremde bzw. unsichere Rechner deutlich erhöht.

Anmeldung

Alle Web-Anwendungen werden wie bisher direkt aufgerufen – egal, ob sie in das SSO-System integriert sind oder nicht. Die SSO-Seite selbst muß also niemals direkt aufgerufen werden, die teilnehmenden Web-Anwendungen leiten bei Bedarf zur SSO-Seite um und diese – nach Überprüfung der Authentifizierung – wieder zur gewünschten Web-Anwendung zurück.
Anders ausgedrückt: Es gibt keine zentrale Anmelde-Seite, bei der Sie sich z. B. morgens anmelden, erst wenn wirklich eine Authentifizierung notwendig ist, werden Sie dann statt zu einer Anmeldeseite im jeweiligen System zur SSO-Seite https://sso.tugraz.at/idp/Authn/GenericAuthn umgeleitet und nach erfolgter Anmeldung (bzw. wenn man schon angemeldet ist: sofort) wieder zum aufrufenden System zurück.

Die Anwendung überprüft dann, ob Sie auch autorisiert sind, um die Anwendung zu verwenden.

Bei SSO ist (wenn Sie nicht die Handy-Signatur verwenden) immer das TUGRAZonline-Kennwort zu verwenden, nicht das Netzzugangskennwort!

Abmeldung

Obwohl es — außer dem Schließen des Browsers — keine garantierte Methode gibt um sich von allen Systemen abzumelden, bieten wir mit der Single Log-Out-Seite eine Möglichkeit sich bei allen registrierten Seiten innerhalb der TU Graz abzumelden. Diese Seite sollten Sie also immer dann aufrufen, wenn Sie sich auf einem Computer angemeldet haben, dessen Browser Sie nicht schließen können (z. B. in einem Internet-Café), allerdings raten wir davon ab, sich auf solchen Systemen anzumelden.

Im Gegensatz zur Sign-On-Seite sollten Sie sich daher die Adresse der Log-Out-Seite https://sso.tugraz.at/slo/Logout in den Favoriten abspeichern bzw. merken.

Sollten Sie bei einzelnen Services nicht sicher sein, ob das Single Log-Out funktioniert hat (z. B., weil in der Info nicht angezeigt wird, daß das funktioniert hat), dann sollten Sie das Service explizit aufrufen und falls notwendig dann dort die Log-Out-Möglichkeit nutzen.

Service-Provider außerhalb des ZID

Authentifizierung

Auch Institute der TU Graz können (und sollen) dieses Service nutzen und müssen damit keine eigene Benutzerverwaltung aufbauen.
Die Authentifizierung bzw. Identifierung erfolgt zentral über das IDM des ZID und überprüft im Prinzip nur, ob Username und Kennwort stimmen.

Autorisierung

Der Service-Provider entscheidet unabhängig vom ZID, ob er Single Sign-On oder nur Single Sign-In (also mit erzwungener Re-Authentifizierung) anbieten möchte, wie lange eine Anmeldung gültig bleibt und welche User bzw. welche -gruppen (z. B. nur Mitarbeiter des Instituts) das Service nutzen dürfen.

Identifizierung

Über die Daten, die der Service-Provider (SP) vom Identity-Provider (IdP) bekommt, kann der Benutzer auch identifiziert werden und damit z. B. Formulare bereits mit Namen, E-Mail-Adressen etc. (vor)befüllt werden.

Die SSO-Lösung bildet dann zusammen mit dem IDM (TUGRAZonline und das damit verbundene Active Directory) und diesen Autorisierungen unsere AAI.

Wenn Sie ein Service mit SSO anbieten möchten, dann setzen Sie sich bitte mit uns in Verbindung. Wir brauchen dann zumindest eine Bezeichnung für Ihr Service, die Adresse Ihres Services (wir unterstützen nur https) und außerdem die Adresse, über die man sich bei Ihrem Service abmelden kann (für das Single Log-Out).

Beispiele für die Autorisierung in der httpd.conf des Apache

Jeder mit gültigem Acccount

 <Location /xyz>
  AuthType shibboleth
  ShibRequireSession On
  require valid-user
 </Location>

Alle Studierenden und Mitarbeiter

 <Location /xyz>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAny>
   Require shib-attr STATUS ~ BEDIENSTETE:OK
   Require shib-attr STATUS ~ STUDENTEN:OK
  </RequireAny>
 </Location>

Bestimmte Usergruppen

 <Location /xyz>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAll>
   Require shib-attr groupMembership "CN=…,…,OU=TUGRAZ,DC=tugraz,DC=local" "CN=…,…,OU=TUGRAZ,DC=tugraz,DC=local"
  </RequireAll>
 </Location>

Bestimmte User

 <Location /xyz>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAll>
   Require shib-attr USERNAME user1 user2 … usern
  </RequireAll>
 </Location>

Beispiel für vorausgefüllte Formulare

#!/bin/csh
env | grep EMAIL >& /dev/null
if ($status == 0) then
 set vorname = `env | grep GIVENNAME | awk -F"=" '{print $2}' | tr -d '\n'`
 set nachname = `env | grep SURNAME | awk -F"=" '{print $2}' | tr -d '\n'`
 set realname = "$vorname $nachname"
else
 set adresse = ""
 set realname = ""
endif
…
echo '          <tr>'
echo '           <td align="right">'
echo '            Ihr Name:'
echo '           </td>'
echo '           <td> <input type="text" name="realname" size=30'
echo '                       value="'$realname'"> </td>'
echo '          </tr>'
…

Die Attribute shib-attr (USERNAME, GIVENNAME, …) sind dabei von der Datei attribute-map.xml für Shibboleth abhängig.