Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
de:shibidp3testzugang_fuer_externe_admins [2016/03/30 13:13] – Wolfgang Pempe | 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 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Testzugang für externe bzw. SP Admins ====== | + | ====== Testzugang für externe bzw. SP-Admins ====== |
- | **Das Szenario:**\\ | + | **Das Szenario:** Ein neuer SP soll an den IdP angebunden werden. Der SP wird von einem externen Partner administriert, |
- | 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 zu anderen SPs, auf die der externe Admin keinen Zugriff haben soll. | + | **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. |
- | Lösung: Der IdP wird so konfiguriert, | + | **Die Lösung:** Der IdP wird so konfiguriert, |
+ | |||
+ | 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 wird: | ||
- | Dazu ergänzt man im AttributeResolver die Definition der Daten-Konnektoren um eine Aktivierungsbedingung. | ||
- | |||
- | Zuerst legt man eine neue Datei an, in der das Bean mit der Bedingung definiert wird: | ||
<file xml / | <file xml / | ||
<?xml version=" | <?xml version=" | ||
Zeile 35: | Zeile 33: | ||
</ | </ | ||
</ | </ | ||
- | <bean parent=" | + | <bean parent=" |
</ | </ | ||
</ | </ | ||
Zeile 43: | Zeile 41: | ||
</ | </ | ||
- | Dabei ist '' | ||
- | Die Bedingung ist erfüllt, wenn der Benutzer sich nicht mit " | ||
+ | Dabei ist '' | ||
+ | * der Benutzer sich //nicht// mit " | ||
+ | * der Benutzer sich mit dem neuen SP verbindet. | ||
+ | Anders ausgedrückt: | ||
- | Diese Datei muß in '' | + | Diese Datei muss in '' |
<file xml / | <file xml / | ||
<!-- ... --> | <!-- ... --> | ||
Zeile 60: | Zeile 60: | ||
<file xml / | <file xml / | ||
<!-- ... --> | <!-- ... --> | ||
- | <resolver:DataConnector id=" | + | < |
activationConditionRef=" | activationConditionRef=" | ||
ldapURL=" | ldapURL=" | ||
<!-- ... --> | <!-- ... --> | ||
</ | </ | ||
- | Dieses Attribut | + | Dieses Attribut |
+ | |||
+ | ==== 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! | ||
+ | {{tag> |