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 [2021/05/03 14:13] – Silke Meyer | de:shibidp:config-testzugang [2025/03/10 14:16] (aktuell) – Doreen Liebenau | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
- | <callout color="# | + | **Anwendungsfälle: |
- | 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. | + | * 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 zum SP via Shibboleth |
- | </ | + | * Für den Zugang zu einem lokalen SP wird ein Funktionsaccount eingerichtet. |
- | **Das Szenario:** Ein neuer SP soll an den IdP angebunden werden. | + | **Das Problem:** Der Login über einen solchen Gast- oder Funktionsaccount darf keinen Zugriff |
- | **Das Problem:** Die gleichen Attribute, die für das Login zu dem neuen SP nötig sind, gewähren möglicherweise auch Zugang zu anderen SPs, auf die der externe Admin keinen Zugriff haben soll. | + | **Die Lösung:** Der Shibboleth-IdP (ab Version 4.1.x) wird so konfiguriert, dass beim Login über einen [[https:// |
- | **Die Lösung:** Der IdP wird so konfiguriert, | + | Hierzu muss zunächst das Modul '' |
- | Dazu ergänzt man im Attribute-Resolver die Definition der Daten-Konnektoren um eine Aktivierungsbedingung. Zuerst legt man eine neue Datei an, in der das Bean mit der Bedingung definiert | + | < |
+ | (Windows) | ||
+ | C: | ||
+ | |||
+ | (Other) | ||
+ | $ bin/ | ||
+ | </ | ||
+ | |||
+ | Anschließend | ||
- | <file xml / | + | <file xml / |
- | <?xml version=" | + | |
<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>archiv}} | + | {{tag>idp5}} |