Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Zur Kommunikation studentischer Matrikelnummern an Stellen der öffentlichen Verwaltung oder andere Systeme, die dieses Verwaltungsdatum benötigen.

Geltungs- und Nutzungsbereich

Gibt es Anwendungen, die studienrelevante Daten verwalten, brauchen dieseu.U. zur eindeutigen Identifikation von Studierenden neben Vor- und Zuname (oder Geburtsdatum) auch die österreichweit eindeutige Matrikelnummer. Sofern keine solche technische Verbindung zu Systemen der (öffentlichen) Verwaltung besteht, sollte jedenfalls auf die Nutzung der Matrikelnummer als name identifier verzichtet werden – ebenso wie Sozialversicherungsnummern etc. nur innerhalb des für sie bestimmten Bereichs eingesetzt werden sollten.

Warning

Matrikelnummern sind kein guter Identifier für UserIDs, Email-Adressen oder anderen Gebrauch außerhalb der Verwaltung im engeren Sinn, da es durch (Korrektur von) Falsch- bzw. Neuvergabe immer wieder zu Änderungen der Matrikelnummer kommt, auch wenn diese eigentlich lebenslang unverändert und landesweit eindeutig sein sollte.

Implementierung eduID.at

SCHAC personalUniqueCode

Im international eingesetzten SCHAC-Schema wurde das Attribut schacPersonalUniqueCode definiert, das u.a. für die Kennzeichnung der studentID verwendet wird. Die Werte dieses Attributs sind 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

Note
iconfalse

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):

Code Block
languagehtml/xml
<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:studentID: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
iconfalse

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.

Eine 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 so aussehen:

Code Block
languagehtml/xml
<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>

...