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 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