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
Nächste ÜberarbeitungBeide Seiten der Revision
de:shibidp3testzugang_fuer_externe_admins [2016/03/30 13:13] Wolfgang Pempede:shibidp3testzugang_fuer_externe_admins [2020/10/15 12:34] – [Alternative Activation Condition] 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, der kein Angehöriger der Hochschule ist. Dieser Admin möchte jetzt den Zugang zum SP via Shibboleth testen. Dazu braucht er einen Gastaccount auf dem IdP. Ein neuer SP soll an den IdP angebunden werden. Der SP wird von einem externen Partner administriert, der kein Angehöriger der Hochschule ist. Dieser Admin möchte jetzt den Zugang zum SP via Shibboleth testen. Dazu braucht er einen Gastaccount auf dem IdP.
  
Zeile 35: Zeile 35:
                 </constructor-arg>                 </constructor-arg>
             </bean>             </bean>
-            <bean parent="shibboleth.Conditions.RelyingPartyId" c:_0="https://neuer_sp.example.org/shibboleth"/>+            <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidate="https://neuer_sp.example.org/shibboleth"/>
         </list>         </list>
         </constructor-arg>         </constructor-arg>
Zeile 47: Zeile 47:
  
  
-Diese Datei muß in ''services.xml'' referenziert werden:+Diese Datei muss in ''services.xml'' referenziert werden:
 <file xml /opt/shibboleth-idp/conf/services.xml> <file xml /opt/shibboleth-idp/conf/services.xml>
 <!-- ... --> <!-- ... -->
Zeile 60: Zeile 60:
 <file xml /opt/shibboleth-idp/conf/attribute-resolver.xml> <file xml /opt/shibboleth-idp/conf/attribute-resolver.xml>
 <!-- ... --> <!-- ... -->
-    <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"+    <DataConnector id="myLDAP" xsi:type="LDAPDirectory"
         activationConditionRef="shibgast_resolver_condition"         activationConditionRef="shibgast_resolver_condition"
         ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"         ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
 <!-- ... --> <!-- ... -->
 </file> </file>
-Dieses Attribut muß bei allen Daten-Konnektoren eingefügt werden, auch bei dem für die statischen Attribute.+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="1.0" encoding="UTF-8"?>
 +<!--
 + author: Ramon Pfeiffer
 + organisation: Universität Tübingen - ZDV
 + 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="http://www.springframework.org/schema/beans"
 +    xmlns:util="http://www.springframework.org/schema/util"
 +    xmlns:p="http://www.springframework.org/schema/p"
 +    xmlns:c="http://www.springframework.org/schema/c"
 +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 +                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
 +                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
 +
 +    <bean
 +        id="activation-condition-ExternalAdmin"
 +        parent="shibboleth.Conditions.Scripted"
 +        factory-method="inlineScript">
 +        <constructor-arg>
 +            <value>
 +<![CDATA[
 +    var adminsAndServices = {
 + //Wertepaare können hier kommasepariert eingetragen werden
 + //"admin1" : "service1",
 + //"admin2" : "service2"
 +    };
 +
 +    value = true;
 +    for(admin in adminsAndServices){
 +        value = value && canAccess(admin, adminsAndServices[admin]);
 +    }
 +
 +    value;
 +
 +    function canAccess(user, service){
 +        return isAdministratedService(service) || !isServiceAdministrator(user);
 +   }
 +
 +    function isAdministratedService(service){
 +        rpCtx = profileContext.getSubcontext("net.shibboleth.idp.profile.context.RelyingPartyContext");
 +        return rpCtx != null && rpCtx.getRelyingPartyId().equals(service);
 +    }
 +
 +    function isServiceAdministrator(user){
 +        arCtx = profileContext.getSubcontext("net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext");
 +        return arCtx != null && arCtx.principal.equals(user);
 +    }
 +]]>
 +            </value>
 +        </constructor-arg>
 +
 +    </bean>
 +</beans>
 +</file>
 +
 +Herzlichen Dank an Ramon Pfeiffer aus Tübingen für diese Variante!
 +
 +{{tag>idp3 fixme moveme}}
  • Zuletzt geändert: vor 19 Monaten