Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:shibidp:config-testzugang [2020/10/15 13:20] – ↷ Seite von de:shibidp3testzugang_fuer_externe_admins nach de:shibidp:config-testzugang verschoben und umbenannt Silke Meyer | de:shibidp:config-testzugang [2025/03/10 14:16] (aktuell) – Doreen Liebenau | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== |
| - | **Das Szenario:** Ein neuer SP soll an den IdP angebunden werden. Der SP wird von einem externen Partner administriert, | + | |
| - | **Das Problem:** Die gleichen Attribute, die für das Login zu dem neuen SP nötig sind, gewähren möglicherweise auch Zugang | + | **Anwendungsfälle:** |
| + | * Ein neuer Service-Provider soll an den Identity-Provider einer Hochschule angebunden werden. Der SP wird von einem externen Partner administriert, dessen Mitarbeitende keine Angehörigen der Hochschule sind. Eine dieser Personen muss jedoch den Zugang | ||
| + | * Für den Zugang zu einem lokalen SP wird ein Funktionsaccount eingerichtet. | ||
| - | **Die Lösung:** Der IdP wird so konfiguriert, | + | **Das Problem:** Der Login über einen solchen Gast- oder Funktionsaccount darf keinen Zugriff auf andere |
| - | Dazu ergänzt man im Attribute-Resolver | + | **Die Lösung:** Der Shibboleth-IdP (ab Version 4.1.x) wird so konfiguriert, |
| - | <file xml / | + | Hierzu muss zunächst das Modul '' |
| - | <?xml version=" | + | |
| + | < | ||
| + | (Windows) | ||
| + | C: | ||
| + | |||
| + | (Other) | ||
| + | $ bin/ | ||
| + | </ | ||
| + | |||
| + | Anschließend wird die entsprechende Bedingung formuliert: | ||
| + | |||
| + | <file xml / | ||
| <beans xmlns=" | <beans xmlns=" | ||
| - | | + | |
| - | xmlns: | + | xmlns: |
| - | xmlns: | + | |
| - | xmlns: | + | |
| - | xsi: | + | |
| - | http:// | + | |
| - | http:// | + | |
| - | + | | |
| - | <bean id="shibgast_resolver_condition" parent=" | + | |
| + | | ||
| + | | ||
| + | |||
| + | <bean id="shibboleth.context-check.Condition" parent=" | ||
| < | < | ||
| - | | + | |
| - | <bean parent=" | + | |
| - | < | + | |
| - | | + | < |
| - | < | + | |
| - | <value> | + | |
| - | # | + | < |
| - | </ | + | < |
| - | </constructor-arg> | + | <entry key=" |
| - | </bean> | + | < |
| - | </constructor-arg> | + | < |
| - | </bean> | + | </list> |
| - | < | + | </entry> |
| - | </ | + | </map> |
| + | | ||
| + | | ||
| + | </constructor-arg> | ||
| + | </bean> | ||
| + | </ | ||
| </ | </ | ||
| </ | </ | ||
| - | + | ||
| + | <!-- ... --> | ||
| </ | </ | ||
| - | |||
| </ | </ | ||
| - | Dabei ist '' | + | Dabei ist '' |
| - | * der Benutzer | + | * eine Person |
| - | * der Benutzer sich mit dem neuen SP verbindet. | + | * eine Person auf den fraglichen |
| - | Anders ausgedrückt: | + | Anders ausgedrückt: |
| - | Diese Datei muss in '' | + | Der Context Ceck muss dann noch zu den Post-Authentication-Flows |
| - | <file xml / | + | |
| - | <!-- ... --> | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | </ | + | |
| - | <!-- ... --> | + | |
| - | </ | + | |
| - | Schließlich ergänzt man die Definition der Daten-Konnektoren um das Attribut '' | + | <file xml / |
| - | <file xml / | + | |
| <!-- ... --> | <!-- ... --> | ||
| - | <DataConnector id="myLDAP" | + | <bean parent="SAML2.SSO" |
| - | activationConditionRef=" | + | |
| - | ldapURL=" | + | |
| <!-- ... --> | <!-- ... --> | ||
| - | </ | ||
| - | Dieses Attribut muss bei allen Daten-Konnektoren eingefügt werden, auch bei dem für die statischen Attribute. | ||
| - | |||
| - | ==== Alternative Activation Condition ==== | ||
| - | |||
| - | Alternativ sollte auch diese Activation-Condition auf Java-Script-Basis funktionieren: | ||
| - | |||
| - | <file xml> | ||
| - | <?xml version=" | ||
| - | <!-- | ||
| - | author: Ramon Pfeiffer | ||
| - | organisation: | ||
| - | email: ramon.pfeiffer@uni-tuebingen.de | ||
| - | date: 2017-08-24 | ||
| - | |||
| - | This file is free to use for any purposes, without any warranty, as long as you keep this comment intact. | ||
| - | --> | ||
| - | <beans | ||
| - | xmlns=" | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xmlns: | ||
| - | xsi: | ||
| - | http:// | ||
| - | http:// | ||
| - | |||
| - | <bean | ||
| - | id=" | ||
| - | parent=" | ||
| - | factory-method=" | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | var adminsAndServices = { | ||
| - | // | ||
| - | //" | ||
| - | //" | ||
| - | }; | ||
| - | |||
| - | value = true; | ||
| - | for(admin in adminsAndServices){ | ||
| - | value = value && canAccess(admin, | ||
| - | } | ||
| - | |||
| - | value; | ||
| - | |||
| - | function canAccess(user, | ||
| - | return isAdministratedService(service) || !isServiceAdministrator(user); | ||
| - | } | ||
| - | |||
| - | function isAdministratedService(service){ | ||
| - | rpCtx = profileContext.getSubcontext(" | ||
| - | return rpCtx != null && rpCtx.getRelyingPartyId().equals(service); | ||
| - | } | ||
| - | |||
| - | function isServiceAdministrator(user){ | ||
| - | arCtx = profileContext.getSubcontext(" | ||
| - | return arCtx != null && arCtx.principal.equals(user); | ||
| - | } | ||
| - | ]]> | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | </ | ||
| - | </ | ||
| </ | </ | ||
| - | Herzlichen Dank an Ramon Pfeiffer aus Tübingen für diese Variante! | + | Anschließend den IdP neu starten. |
| - | {{tag>idp3 fixme moveme}} | + | {{tag>idp5}} |