Service Provider (SP)

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 (SP) entscheidet unabhängig vom ZID, ob er Single Sign-On oder nur Single Sign-In (also gleiche Zugangsdaten, aber mit erzwungener Re-Authentifizierung) anbieten möchte, wie lange eine Anmeldung gültig bleibt und welche User bzw. welche -gruppen (z. B. nur Mitarbeiter und Mitarbeiterinnen 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 User werden aber (bei Systemen, die Sie nicht zwingend nutzen müssen, zumindest beim ersten Mal) gefragt, ob Sie damit einverstanden sind, dass der SP diese Daten von unserem IdP erhalten darf.

Unter anderem werden neben Namen etc. auch die Benutzergruppen (der Account-Typ) mitgeliefert, zu denen die angemeldete Personen gehört:

  • Bedienstete (BEDIENSTETE:OK)
  • Studierende (STUDENTEN:OK)
  • Alumni (ALUMNI:OK)
  • Basis-Anwender (BASIS:OK)
  • Identifizierte Gäste (KNOWNGUEST:OK)
  • Gäste (GUEST:OK)

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 /xyz1>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAny>
   Require shib-attr STATUS ~ BEDIENSTETE:OK
   Require shib-attr STATUS ~ STUDENTEN:OK
  </RequireAny>
 </Location>

Bestimmte Usergruppen

Benutzer-/Profilgruppen
 <Location /xyz2>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAny>
   Require shib-attr STATUS GUEST:OK
  </RequireAny>
 </Location>
Sicherheitsgruppen
 <Location /xyz3>
  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 /xyz4>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAll>
   Require shib-attr USERNAME user1 user2 … usern
  </RequireAll>
 </Location>
oder (besser, da E-Mail-Adressen eher bekannt sind als die Usernamen)
 <Location /xyz5>
  AuthType shibboleth
  ShibRequireSession On
  <RequireAll>
   Require shib-attr TCSMAIL email1@tugraz.at email2@tugraz.at … emailn@tugraz.at
  </RequireAll>
 </Location>
TCSMAIL bedeutet dabei, dass es eine verifizierte E-Mail-Adresse am Exchange-Server der TU Graz ist, keine Institutsadresse oder externe Adresse.

Programme, die auf Umgebungsvariable zugreifen, können z. B. als CGI-Programme oder als SSI aufgerufen werden.
Die Attribute shib-attr (USERNAME, groupMembership, STATUS, …) und die Umgebungsvariablen (EMAIL, GIVENNAME, …) sind dabei von der Shibboleth-Konfig-Datei attribute-map.xml abhängig, auch Shib-Authentication-Method ist eine Umgebungsvariable, die von Shibboleth gesetzt wird - bei Verwendung der Handysignatur auf den Wert urn:oasis:names:tc:SAML:2.0:ac:classes:X509

Beispiel für vorausgefüllte Formulare bei Verwendung der Handy-Signatur

Im Beispiel wird in einem CSH-Script abgefragt, ob die SSO-Anmeldung über die Handysignatur erfolgt ist. Wenn diese Bedingung erfüllt ist, dann werden bestimmte Daten, die durch die Anmeldung bekannt sind (E-Mail-Adresse, Vor- und Nachname), dazu verwendet, um Formularfelder vorauszufüllen:
#!/bin/csh
…
env | grep Shib-Authentication-Method | grep "urn:oasis:names:tc:SAML:2.0:ac:classes:X509"
if ($status != 0) then
 echo "Dieses Service dürfen Sie nur nach Authentifizierung per Handy-Signatur aufrufen!"
else
 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 ' Ihr Name:'
 echo ' <input type="text" name="realname" size=30 value="'$realname'">
 …
endif