Zur Kommunikation studentischer Matrikelnummern an Stellen der öffentlichen Verwaltung oder andere Systeme der Lern-/Lehrverwaltung, die dieses Verwaltungsdatum Datum legitimerweise benötigen.
Geltungs- und Nutzungsbereich
Gibt es Anwendungen, die studienrelevante Daten verwalten, brauchen dieseuu.U. zur eindeutigen Identifikation von Studierenden neben Vor- und Zuname (oder Geburtsdatum) auch die österreichweit eindeutige Matrikelnummer. Sofern keine solche technische Sofern keine technische Verbindung zu Systemen der ( öffentlichen ) Verwaltung bzw. Hochschullehrverwaltung besteht, sollte jedenfalls auf die Nutzung der Matrikelnummer als name identifier verzichtet werden – ebenso wie Sozialversicherungsnummern etc. z.B. die Sozialversicherungsnummer nur innerhalb des für sie bestimmten Bereichs der Gesundheitsverwaltung eingesetzt werden solltensollte.
Warningnote |
---|
Matrikelnummern sind kein guter keine guten Identifier für UserIDs, Personen (auch etwa als Teil von UserIDs oder Email-Adressen) oder anderen Gebrauch außerhalb der Verwaltung Lehrverwaltung im engeren Sinn, da es durch (Korrektur von) Falsch- bzw. Neuvergabe Neuvergaben immer wieder zu Änderungen der Matrikelnummer von Matrikelnummern kommt, auch wenn diese eigentlich lebenslang unverändert und landesweit eindeutig sein sollte. |
...
Solche Änderung an Verwaltungsdaten sollten nach Möglichkeit auf Systeme der Lehrverwaltung beschränkt bleiben. Benutzt man die Matrikelnummer jedoch auch als Basis von UserIDs oder Email-Adressen, vervielfältigt man die Auswirkungen solcher Änderungen in andere IT-Systeme, unter teils hohem Aufwand für Datenmigration und BenutzerInnen-Support ("Ihre UserID, Email-Adresse, Homepage, eduroam-Identifier, etc. haben sich geändert, ..."). Im Kontext von Identity Federation wären dann aber auch Systeme außerhalb der eigenen Institution von solchen Änderungen betroffen, wenn etwa das eduPersonPrincipalName-Attribut aus der Matrikelnummer gebildet würde und diese sich änderte: Damit änderte sich auch der Wert des eduPersonPrincipalName und Betroffene verlören damit u.U. Zugriff auf ihre Daten bei diversen föderierten Services, die sich eben auf das eduPersonPrincipalName-Attribut zur Wiedererkennung ihrer NutzerInnen verließen. Im Anlassfall "alle" davon betroffenen Services zu ermitteln und zu verständigen und um deren Kooperation bei der Korrektur/dem Nachtragen solcher Änderungen zu ersuchen, erscheint wenig verlockend.
SCHAC personalUniqueCode
Im international eingesetzten SCHAC-Schema wurde das Attribut schacPersonalUniqueCode
definiert, das u.a. für die Kennzeichnung der studentID verwendet wird. auch für die Formulierung des European Student Identifier (ESI) verwendet wird: Die Werte dieses Attributs sind URNs, URNs mit standardisierten Prefixen, siehe dazu die SCHAC-Spezifikation (bzw. RFC 6338 zum SCHAC URN Namespace). Sofern also die studentische Matrikelnummer als SAML-Attribut übertragen werden soll, empfielt ACOnet die Nutzung des Attributs schacPersonalUniqueCode
. Werte haben dabei die Form (im Beispiel für die Matrikelnummer 12345
): urn:schac:personalUniqueCode:int:studentID:AT:0012345
Form als ESI:
Infonote |
---|
|
Der numerische Wert der Matrikelnummer ist dabei ggfs. mit führenden Nullen auf sieben Zeichen aufzufüllen! |
Shibboleth IDP
Nachdem dieses Attribut wohl kaum mit genau solchen Werten bereits gespeichert sein wird, folgt ein Beispiel, wie dynamisch aus dem Attribut uid (das aus dem DataConnector mit der id="myLDAP" kommt) die Matrikelnummer extrahiert und in die benötigte Form gebracht werden kann. In diesem fiktiven Beispiel enthält uid eine lokale UserID, die für Studierende die Form x<MATRIKELNR> hat. Hat die UserID nicht die erwartete Form, bleibt das Attribut leer (und wird vom IdP später gefiltert):
title | Beispiel Attributwert, für Matrikelnummer 1234567 |
---|
|
urn: |
Code Block |
---|
|
<resolver:AttributeDefinition id="matrikelMapping" xsi:type="Mapped" xmlns="urn:mace:shibboleth:2.0:resolver:ad" dependencyOnly="true" sourceAttributeID="uid">
<resolver:Dependency ref="myLDAP" />
<ValueMap>
<ReturnValue>urn:schac:personalUniqueCode:int:studentIDesi:AT:$1</ReturnValue>
<SourceValue>^x([0-9]{7})$</SourceValue>
</ValueMap>
</resolver:AttributeDefinition>
<resolver:AttributeDefinition id="matrikel" xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="matrikelMapping">
<resolver:Dependency ref="matrikelMapping" />
<resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" />
</resolver:AttributeDefinition> |
Info |
---|
|
Statt uid kann hier also jedes existierende Attribut eingesetzt werden, das bereits eine Form der Matrikelnummer enthält, etwa die Emailadresse (mail) oder der eduPersonPrincipalName. |
Shibboleth IDP
Erzeugen
Das dynamische Erzeugen des ESI aus einem Attribut, das eine Form der Matrikelnummer enthält, zeigen wir in unserer Attribute Resolver-Dokumentation.
Freigeben
Eine passende Policy für den attribute-filter.xml
, die Matrikelnummer als ESI-Attribut (d.h. nur die ESI-spezifischen Werte des schacPersonalUniqueCode
-Attributs) nur an berechtigte Service Provider weiterzugeben (was u.a. das "MyAcademicID IAM Service" sowie das österreichische iXam-Prüfungssystem einschließtEine passende Regel dieses Attribut (bzw. nur syntaktisch korrekte Werte davon) nur an einen bestimmten Service Provider weiterzugeben, und nur, wenn eduPersonAffiliation den Wert student hat (also nur für Studierende), könnte beim Shibboleth IDP dann so aussehen:
Include Page |
---|
| IDP 4 include-MyAcacemicID-rules |
---|
| IDP 4 include-MyAcacemicID-rules |
---|
|
Note |
---|
Die Erasmus+ Services benötigen weitere Attribute/Daten und nicht nur die hier relevante/gezeigte Matrikelnummer als ESI. |
Code Block |
---|
|
<AttributeFilterPolicy id="TestSPMatrikel">
<PolicyRequirementRule xsi:type="basic:AND">
<basic:Rule xsi:type="basic:AttributeRequesterString" value="https://test-sp.aco.net/shibboleth" />
<basic:Rule xsi:type="basic:AttributeValueString" attributeID="eduPersonAffiliation" value="student" />
</PolicyRequirementRule>
<AttributeRule attributeID="matrikel">
<PermitValueRule xsi:type="basic:AttributeValueRegex" regex="^urn:schac:personalUniqueCode:int:studentID:AT:[0-9]{7}$" />
</AttributeRule>
</AttributeFilterPolicy> |