Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:shibidp:config-custom-data-connector [2021/05/03 15:32] – ↷ Seite von de:shibidp3extdataconnector nach de:shibidp:config-custom-data-connector verschoben und umbenannt Silke Meyer | de:shibidp:config-custom-data-connector [2025/05/28 09:28] (aktuell) – veralteten Text für IdPv3 gelöscht Doreen Liebenau | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ======Data Connector====== | ||
| - | <callout color="# | ||
| - | Dieser Artikel ist ein Community-Beitrag für Shibboleth IdP 3.x. Es ist unklar, ob er für Shibboleth IdP 4.x so noch gilt. | ||
| - | </ | ||
| - | |||
| - | Um für den Shibboleth Identity Provider der Version 3 einen Datenkonnektor selbst zu schreiben, müssen bestimmte Klassen erweitert werden und eigne Namespaces erzeugt werden. | ||
| - | |||
| - | ===== Zu erweiternde Klassen ===== | ||
| - | |||
| - | * Data Connector Klasse: < | ||
| - | * Parser: < | ||
| - | * Namespace Handler: < | ||
| - | |||
| - | ==== Namespace Schema das erweitert werden muss ==== | ||
| - | |||
| - | * Namespace Schema: < | ||
| - | |||
| - | Folgendes Beispiel implementiert das Attribut eduPersonTargetedId aus der Shibboleth Version 2. | ||
| - | |||
| - | ====Data Connector Beispiel: TargetedId==== | ||
| - | |||
| - | ===Data connector Class=== | ||
| - | |||
| - | <file java TargetedIdSampleDataConnector.java> | ||
| - | package org.example.shib_idp; | ||
| - | ... | ||
| - | public class TargetedIdSampleDataConnector extends AbstractDataConnector { | ||
| - | |||
| - | | ||
| - | | ||
| - | | ||
| - | |||
| - | | ||
| - | | ||
| - | | ||
| - | // compute SHA-1 Hash for eduPersonTargetedId: | ||
| - | relyingPartyId = resolutionContext.getAttributeRecipientID(); | ||
| - | Map< | ||
| - | String username = resolutionContext.getPrincipal(); | ||
| - | |||
| - | IdPAttribute attribute = new IdPAttribute(" | ||
| - | result.put(" | ||
| - | List< | ||
| - | outputValues.add(new StringAttributeValue(getTargetedId(username))); | ||
| - | attribute.setValues(outputValues); | ||
| - | LOG.debug(" | ||
| - | |||
| - | return result; | ||
| - | } | ||
| - | |||
| - | | ||
| - | try { | ||
| - | final MessageDigest md = MessageDigest.getInstance(" | ||
| - | md.update(relyingPartyId.getBytes()); | ||
| - | md.update((byte) ' | ||
| - | md.update(source.getBytes()); | ||
| - | md.update((byte) ' | ||
| - | |||
| - | return Base64Support.encode(md.digest(salt.getBytes()), | ||
| - | } catch (final NoSuchAlgorithmException e) { | ||
| - | LOG.error(" | ||
| - | throw new ResolutionException(" | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===Data Connector Parser=== | ||
| - | |||
| - | <file java TargetedIdSampleDataConnectorParser.java> | ||
| - | package org.example.shib_idp; | ||
| - | ... | ||
| - | public class TargetedIdSampleDataConnectorParser extends AbstractDataConnectorParser { | ||
| - | |||
| - | | ||
| - | |||
| - | /** {@inheritDoc} */ | ||
| - | @Override protected Class< | ||
| - | return TargetedIdSampleDataConnector.class; | ||
| - | } | ||
| - | |||
| - | | ||
| - | | ||
| - | | ||
| - | super.doParse(element, | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===Data Connector Namespace Handler=== | ||
| - | |||
| - | <file java TargetedIdSampleDataConnectorNamespaceHandler.java> | ||
| - | package org.example.shib_idp; | ||
| - | |||
| - | import net.shibboleth.ext.spring.util.BaseSpringNamespaceHandler; | ||
| - | |||
| - | public class TargetedIdSampleDataConnectorNamespaceHandler extends BaseSpringNamespaceHandler { | ||
| - | |||
| - | /** Namespace for this handler. */ | ||
| - | public static String NAMESPACE = " | ||
| - | | ||
| - | /** {@inheritDoc} */ | ||
| - | | ||
| - | | ||
| - | registerBeanDefinitionParser(TargetedIdSampleDataConnectorParser.SCHEMA_NAME, | ||
| - | new TargetedIdSampleDataConnectorParser()); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===Schema Erweiterung=== | ||
| - | |||
| - | * Die Schema Erweiterung muss im *.jar File unter schema/ | ||
| - | |||
| - | <file xml schema/ | ||
| - | <?xml version=" | ||
| - | <schema targetNamespace=" | ||
| - | xmlns=" | ||
| - | xmlns: | ||
| - | elementFormDefault=" | ||
| - | |||
| - | <import namespace=" | ||
| - | schemaLocation=" | ||
| - | |||
| - | < | ||
| - | < | ||
| - | < | ||
| - | | ||
| - | </ | ||
| - | </ | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ===Spring Schema File=== | ||
| - | |||
| - | * Das Schema File muss im *.jar File unter META-INF/ | ||
| - | |||
| - | <file properties META-INF/ | ||
| - | urn\: | ||
| - | </ | ||
| - | |||
| - | ===Spring Handler File=== | ||
| - | |||
| - | * Das Handler File muss im *.jar File unter META-INF/ | ||
| - | |||
| - | <file properties META-INF/ | ||
| - | urn\: | ||
| - | </ | ||
| - | |||
| - | ===Plug-In installieren=== | ||
| - | |||
| - | * Aus den angegebenen Dateien ein *.jar file generieren (am besten mit mvn) | ||
| - | * Dieses *.jar file in das lib Verzeichnis der Webapplication vom Shibboleth IdP kopieren. | ||
| - | |||
| - | ===Data Connector im Attribute Resolver benutzen=== | ||
| - | |||
| - | <file xml conf/ | ||
| - | < | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xsi: | ||
| - | urn: | ||
| - | urn: | ||
| - | urn: | ||
| - | urn: | ||
| - | urn: | ||
| - | urn: | ||
| - | ... | ||
| - | <!-- TargetedId DataConnector --> | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | {{tag> | ||