Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp3attributes-publishers [2017/02/24 17:48] Raoul Gunnar Boreniusde:shibidp:config-attributes-publishers [2023/12/05 09:42] (aktuell) Gerrit Gragert
Zeile 1: Zeile 1:
-====== Attribut-Configuration für (kommerzielle) Verlagsanbieter =====+====== Attributfreigaben für Verlagsanbieter =====
 +(zurück zur [[de:shibidp:config-attributes#haeufig_genutzte_service_provider|Übersicht]])
  
-Sofern Ihre Hochschule (oder meist die Bibliothek der Hochschule) Lizenzverträge mit kommerziellen Verlagsanbietern abgeschlossen hat ist es mittlerweile möglich statt der unkomfortablen IP-basierten +Viele kommerzielle Verlagsanbieter bieten inzwischen eine Anmeldung über SAML an, also über die DFN-AAI oder eduGAIN. Sie haben sich dazu auf **einheitliche Attributanforderungen** geeinigtso dass Sie mit einer einzigen Konfiguration am IdP alle großen Verlagsanbieter auf einmal abdecken können. Die Voraussetzung dafür ist meist ein Lizenzvertrag zwischen Ihrer Hochschule bzw. Bibliothek und dem Anbieter.
-Autorisierung auch einen Login per SAML/AAI zu nutzenbei den Anbietern übrigends oft auch etwas missverständlich "Shibboleth"-Login genannt (das ist so als ob man statt von "Web-Seiten" von "Apache-Seiten" reden würde).+
  
-Glücklicherweise haben sich die Anbieter im Verlagsbereich schon seit geraumer Zeit auf einheitliche Attributanforderungen geeinigt, so dass Sie mit einer einzigen Konfiguration am IdP alle grossen Verlagsanbieter auf einmal "erschlagen"+Dennoch sollten Sie die Anbieter einzeln darüber zu informierendass Sie den SAML-basierten Zugriff nutzen wollen. Bei manchen kann man dies online aktivieren, bei anderen wenden Sie sich bitte an die Kontaktperson des Verlags.
- +
-** Wichtig: trotzdem bleibt es Ihnen nicht erspart alle Anbieter einzeln darüber zu informieren dass Sie jetzt einen SAML-fähigen IdP betreiben und diesen gerne für den Zugriff nutzen wollen. Bei manchen Anbietern kann man dies online aktivieren, andere müssen auf anderen Wegen kontaktiert werden. Klären Sie das bitte mit der jeweiligen Kontaktperson des Verlages**+
  
 Die Verlage erwarten im Normalfall eines von zwei Attributen: Die Verlage erwarten im Normalfall eines von zwei Attributen:
  
-  * Zugehörigkeit des Users: eduPersonScopedAffiliation mit dem Wert "member@SCOPE" +  * Zugehörigkeit des Users: ''eduPersonScopedAffiliation'' mit dem Wert "member@SCOPE" 
-  * Berechtigung des Users: eduPersonEntitliment mit dem Wet "urn:mace:dir:common-lib-terms"+  * Berechtigung des Users: ''eduPersonEntitlement'' mit dem Wert "urn:mace:dir:common-lib-terms" 
 + 
 +<callout color="#ff9900" title="Welche Gruppen bekommen Zugriff?"> 
 +Ihr Lizenzvertrag oder ggf. das Landeshochschulgesetz Ihres Bundeslandes geben Auskunft darüber, welche Gruppen welche Berechtigungen bekommen. 
 +</callout> 
 + 
 +Eine Orientierung für die Attributfreigaben bietet auch die Gruppe FIM4L (Federated Identity Management For Libraries) https://www.fim4l.org/ mit ihren Principles and Recommendation. 
 + 
 +===== Beispiel =====
  
-Im ersten Moment erscheint es vielleicht naheliegend das IdM-Scheme um das eduPerson-Schema zu +Wir zeigen im Folgenden eine Beispielkonfiguration, die **im IdM vorhandene Gruppen** nutzt, um diese beiden Attribute IdP-seitig zu befüllen und freizugebenIm Beispiel gibt es folgende Gruppen:
-erweitern um dann jedem vorhandenen User die entsprechende Zugehörigkeit und Berechtigung +
-im IdM zu geben.+
  
-Da die Usergruppen im IdM-System in den allermeisten Fällen schon unterscheidbar +^ Gruppe          ^ memberOf ^ 
-angelegt sind (z.B. StudentenAngestelltProfessorenGäste in einzelnen Teilbáumen oder zumindest +| Angestellte     | cn=angestellte,ou=users,dc=beispiel-uni,dc=de | 
-in eigenen "memberOfs") ist es viel eleganter diese schon vorhandene Gruppeninformatition zu nutzen +| Studierende A   | cn=studiengang A,ou=users,dc=beispiel-uni,dc=de | 
-um im idP "on-the-fly" die nötigen Werte für eduPersonScopedAffiliation und eduPersonEntitliment +| Studierende B   | cn=studiengang B,ou=users,dc=beispiel-uni,dc=de | 
-zu erzeugen. Der grosse Vorteil dieser Methode ist dass Ihr IdM-System nicht erweitert werden +| Professor*innen | cn=profs,ou=users,dc=beispiel-uni,dc=de | 
-muss und z.B. Eingabemasken für IdM-Sachbearbeiter nicht modifiziert werden müssen.+| Gäste           | cn=gaeste,ou=users,dc=beispiel-uni,dc=de |
  
-Wir gehen von einem Beispiel-IdM aus in dem es folgende Gruppen gibt:+Es soll erreicht werden, dass die ersten vier Gruppen als Angehörige der Einrichtung die Verlagsressourcen nutzen dürfen, Gäste dagegen nicht.
  
-^ Gruppe      ^ memberOf ^ +==== Attributdefinition im upgegradeten IdP 4.x ====
-| Angestellte | cn=angestellte,ou=users,dc=beispiel-uni,dc=de | +
-| Studenten A | cn=studiengang A,ou=users,dc=beispiel-uni,dc=de | +
-| Studenten B | cn=studiengang B,ou=users,dc=beispiel-uni,dc=de | +
-| Professoren | cn=professoren,ou=users,dc=beispiel-uni,dc=de | +
-| Gäste       | cn=gaeste,ou=users,dc=beispiel-uni,dc=de |+
  
-Beispielhaft solle die ersten drei Gruppen im Sinne des Landshochschulgesetzes als "Angehörige" (="member"der Einrichtung anzusehen sein, die Gruppe "Gäste" dagegen nicht und ist somit nicht nutzungsberechtigt. +In aktualisierten IdP 4.x mit der alten Syntax/ohne die Attribute Registry machen Sie es so:
-**Bitte konsultieren Sie für Ihren konkreten Fall den Lizenzvertrag mit dem Anbieter und ggfs. das LHG Ihres Bundeslandes um festzustellen welche Gruppen welche Berechtigungen bekommen sollen!**+
  
 <file xml ./conf/attribute-resolver.xml> <file xml ./conf/attribute-resolver.xml>
Zeile 40: Zeile 38:
  <!-- eduPersonAffiliaton aus dem 'memberof' herausholen -->  <!-- eduPersonAffiliaton aus dem 'memberof' herausholen -->
          
- <AttributeDefinition xsi:type="Mapped" id="eduPersonAffiliation" sourceAttributeID="memberOf"> + <AttributeDefinition xsi:type="Mapped" id="eduPersonAffiliation"> 
-  <Dependency ref="myLDAP" />+  <InputDataConnector ref="myLDAP" attributeNames="memberOf"/>
    <DisplayName xml:lang="en">Affiliation type</DisplayName>    <DisplayName xml:lang="en">Affiliation type</DisplayName>
    <DisplayName xml:lang="de">Zugehörigkeit</DisplayName>    <DisplayName xml:lang="de">Zugehörigkeit</DisplayName>
    <DisplayDescription xml:lang="en">Type of affiliation with Home Organization</DisplayDescription>    <DisplayDescription xml:lang="en">Type of affiliation with Home Organization</DisplayDescription>
    <DisplayDescription xml:lang="de">Art der Zugehörigkeit zur Heimateinrichtung</DisplayDescription>    <DisplayDescription xml:lang="de">Art der Zugehörigkeit zur Heimateinrichtung</DisplayDescription>
-  <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonAffiliation" /> 
   <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" friendlyName="eduPersonAffiliation" />   <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" friendlyName="eduPersonAffiliation" />
  
Zeile 53: Zeile 50:
  
    <!-- Mapping der Gruppen aus dem IdM jede Gruppe bekommt eine eigene eduPersonAffiliation    <!-- Mapping der Gruppen aus dem IdM jede Gruppe bekommt eine eigene eduPersonAffiliation
-   und zusätzlich "member" sofern "Angehörig" im Sinne LHG -->+   und zusätzlich "member" sofern "Angehörige" im Sinne LHG -->
  
    <ValueMap>    <ValueMap>
Zeile 71: Zeile 68:
      <SourceValue ignoreCase="true">cn=professoren,.+</SourceValue>      <SourceValue ignoreCase="true">cn=professoren,.+</SourceValue>
    </ValueMap>    </ValueMap>
- 
  </AttributeDefinition>  </AttributeDefinition>
  
  <!-- eduPersonScopedAffiliation aus eduPersonAffiliation bilden -->  <!-- eduPersonScopedAffiliation aus eduPersonAffiliation bilden -->
- <AttributeDefinition xsi:type="Scoped" id="eduPersonScopedAffiliation" scope="%{idp.scope}" sourceAttributeID="eduPersonAffiliation"> + <AttributeDefinition xsi:type="Scoped" id="eduPersonScopedAffiliation" scope="%{idp.scope}"> 
-   <Dependency ref="eduPersonAffiliation" />+   <InputAttributeDefinition ref="eduPersonAffiliation"/>
    <DisplayName xml:lang="en">Affiliation type (with institution)</DisplayName>    <DisplayName xml:lang="en">Affiliation type (with institution)</DisplayName>
    <DisplayName xml:lang="de">Zugehörigkeit (+ Einrichtung)</DisplayName>    <DisplayName xml:lang="de">Zugehörigkeit (+ Einrichtung)</DisplayName>
    <DisplayDescription xml:lang="en">Type of affiliation with Home Organization with scope</DisplayDescription>    <DisplayDescription xml:lang="en">Type of affiliation with Home Organization with scope</DisplayDescription>
    <DisplayDescription xml:lang="de">Art der Zugehörigkeit zur Heimateinrichtung mit Geltungsbereich</DisplayDescription>    <DisplayDescription xml:lang="de">Art der Zugehörigkeit zur Heimateinrichtung mit Geltungsbereich</DisplayDescription>
-   <AttributeEncoder xsi:type="SAML1ScopedString" name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" encodeType="false" /> 
    <AttributeEncoder xsi:type="SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" friendlyName="eduPersonScopedAffiliation" encodeType="false" />    <AttributeEncoder xsi:type="SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" friendlyName="eduPersonScopedAffiliation" encodeType="false" />
  </AttributeDefinition>  </AttributeDefinition>
Zeile 87: Zeile 82:
  <!-- eduPersonEntitlement je nach eduPersonAffiliation setzen -->  <!-- eduPersonEntitlement je nach eduPersonAffiliation setzen -->
  <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonEntitlement">  <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonEntitlement">
-   <Dependency ref="eduPersonAffiliation" />+   <InputAttributeDefinition ref="eduPersonAffiliation" />
    <DisplayName xml:lang="en">Entitlement</DisplayName>    <DisplayName xml:lang="en">Entitlement</DisplayName>
    <DisplayName xml:lang="de">Berechtigung</DisplayName>    <DisplayName xml:lang="de">Berechtigung</DisplayName>
    <DisplayDescription xml:lang="en">URI that indicates a set of rights to specific resources</DisplayDescription>    <DisplayDescription xml:lang="en">URI that indicates a set of rights to specific resources</DisplayDescription>
-   <DisplayDescription xml:lang="de">Zeichenkette, welche Rechte für spezifischen Ressourcen beschreibt</DisplayDescription+   <DisplayDescription xml:lang="de">Zeichenkette, die Rechte für spezifische Ressourcen beschreibt</DisplayDescription>
-   <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />+
    <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />    <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
    <Script>    <Script>
Zeile 102: Zeile 96:
    </Script>    </Script>
  </AttributeDefinition>  </AttributeDefinition>
 +</file>
  
 +==== Attributdefinition im IdP 4.x ====
 +
 +In **Neu**installationen des IdP 4.x ist die Datei übersichtlicher gestaltet:
 +
 +<file xml ./conf/attribute-resolver.xml>
 +
 + <!-- eduPersonAffiliaton aus dem 'memberof' herausholen -->
 +    
 + <AttributeDefinition xsi:type="Mapped" id="eduPersonAffiliation">
 +  <InputDataConnector ref="myLDAP" attributeNames="memberOf"/>
 +
 +   <!-- default 'affiliate', damit immer mindestens ein Wert vorhanden ist -->
 +   <DefaultValue>affiliate</DefaultValue>
 +
 +   <!-- Mapping der Gruppen aus dem IdM jede Gruppe bekommt eine eigene eduPersonAffiliation
 +   und zusätzlich "member" sofern "Angehörige" im Sinne LHG -->
 +
 +   <ValueMap>
 +     <ReturnValue>student</ReturnValue>
 +     <SourceValue ignoreCase="true">cn=studiengang.+</SourceValue>
 +   </ValueMap>
 +   <ValueMap>
 +     <ReturnValue>staff</ReturnValue>
 +     <SourceValue ignoreCase="true">cn=angestellte,.+</SourceValue>
 +     <SourceValue ignoreCase="true">cn=professoren,.+</SourceValue>
 +   </ValueMap>
 +
 +   <ValueMap>
 +     <ReturnValue>member</ReturnValue>
 +     <SourceValue ignoreCase="true">cn=studiengang.+</SourceValue>
 +     <SourceValue ignoreCase="true">cn=angestellte,.+</SourceValue>
 +     <SourceValue ignoreCase="true">cn=professoren,.+</SourceValue>
 +   </ValueMap>
 + </AttributeDefinition>
 +
 + <!-- eduPersonScopedAffiliation aus eduPersonAffiliation bilden -->
 + <AttributeDefinition xsi:type="Scoped" id="eduPersonScopedAffiliation" scope="%{idp.scope}">
 +   <InputAttributeDefinition ref="eduPersonAffiliation"/>
 + </AttributeDefinition>
 +
 + <!-- eduPersonEntitlement je nach eduPersonAffiliation setzen -->
 + <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonEntitlement">
 +   <InputAttributeDefinition ref="eduPersonAffiliation" />
 +   <Script>
 +          <![CDATA[
 +              if (eduPersonAffiliation.getValues().contains("member")) {
 +                      eduPersonEntitlement.getValues().add("urn:mace:dir:entitlement:common-lib-terms");
 +              }
 +           ]]>
 +   </Script>
 + </AttributeDefinition>
 </file> </file>
 +
 +==== Attributfreigabe ====
  
 <file xml ./conf/attribute-filter.xml> <file xml ./conf/attribute-filter.xml>
-    <!-- Anonyme Angaben können an alle SP freigegeben werden+    <!-- Anonyme Angaben an alle SPs freigeben werden -->
-        damit sind fast alle Verlags-SPs in der Föderation schon zufrieden -->+
     <AttributeFilterPolicy id="LibraryTermsToAnyone">     <AttributeFilterPolicy id="LibraryTermsToAnyone">
         <PolicyRequirementRule xsi:type="ANY" />         <PolicyRequirementRule xsi:type="ANY" />
Zeile 121: Zeile 168:
         </PermitValueRule>         </PermitValueRule>
       </AttributeRule>       </AttributeRule>
- 
     </AttributeFilterPolicy>     </AttributeFilterPolicy>
 </file> </file>
 +
 +{{tag>idp4}}
  • Zuletzt geändert: vor 7 Jahren