Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Info

Mål: Teknisk dokumentation hur ett lärosäte gör för att öppna möjligheten till personliga certifikat via TCS Personal och TCS Personal eScience.
För frågor kring dokumentationen nedan kontakta operations snabel-a SWAMID.SE

Info

För mer information om TCS Personal och TCS Personal eScience samt dess möjligheter och krav, se SUNET TCS Personal och SWAMI Wiki: TCS Personal och TCS eScience

Förutsättningar

  • Lärosätet har en Identity Provider uppsatt som är medlem i SWAMID (Om frågor - kontakta operations snabel-a SWAMID.SE).
  • Lärosätet har blivit godkänd och konfigurerad som abonnent av TCS Personal resp. TCS Personal eScience.
  • Attribut skickas till Service Providers i SWAMID enligt avsnittet attribute-filter.xml på wikisidan Konfigurera metadata för att använda SWAMID.
  • sp.swamid.se används som testmiljö.

Rekommenderad arbetsgång

  1. Modifiera attribute-resolvern för din Identity Provider så att den inkluderar rättighet att använda TCS enligt nedan beskrivet format (eduPersonEntitlement (EPE)).
  2. Modifiera attribute-release policy för din Identity Provider enligt kod nedan. Syftet är att tillåta ivägskickande av uppgift identitetskontroll till certfikatsportalen Confusa SAMT för test på sp.swamid.se.
  3. Verifiera mot sp.swamid.se att ni ser namn, e-postadress, rättighet (entitlement) och unik identitet (eduPersonPrincipalName (EPPN)).
  4. Kontrollera att person med rätt rättighet kan logga in i TCS Personal och TCS Personal eScience med möjlighet att skapa certifikat.

Konfiguration för Shibboleth

Info

Konfigurationerna under detta avsnitt fungerar endast för Shibboleth 2 eller senare. För simpleSAMLphp och ADFS2 kan konfigurationsexemplen endast användas som inspiration.

Om ALLA personer uppfyller kravet på uppvisande av legitimation modifiera filen attribute-resolver.xml enligt:

Info

Observera: Konfigurationen under detta avsnitt får endast användas om samtliga användare vid lärosätet uppfyller kraven för att få kvittera ut certfikat av typerna TCS Persoanl och TCS Personal eScience.

Lägg till en en statisk källa:
Code Block
<resolver:DataConnector id="staticTcsPersonalEntitlements" xsi:type="dc:Static" xmlns="urn:mace:shibboleth:2.0:resolver:dc">
     <Attribute id="tcsPersonalEntitlement">
          <Value>urn:mace:terena.org:tcs:personal-user</Value>
     </Attribute>
     <Attribute id="tcsPersonaleScienceEntitlement">
          <Value>urn:mace:terena.org:tcs:escience-user</Value>
     </Attribute>
</resolver:DataConnector>
Lägg till attributdefinition:
Code Block
<resolver:AttributeDefinition xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="tcsPersonalEntitlement">
     <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
     <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="tcsPersonaleScienceEntitlement">
     <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
     <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
</resolver:AttributeDefinition>

Om ENDAST NÅGRA personer uppfyller kravet på uppvisande av legitimation modifiera filen attribute-resolver.xml enligt:

Info

Observera: Konfigurationen under detta avsnitt används som mall om endast några användare vid lärosätet uppfyller kraven för att få kvittera ut certfikat av typerna TCS Personal och TCS Personal eScience.

Alternativ 1: Särskilt attribut finns i LDAP för att visa att legitimationskontroll är genomförd

Förutsättning: I LDAP finns attributet idControll med värdet "yes" om legtimationskontroll är genomförd för användaren, annars saknas attributet eller har ett annat värde.

Tillägg för administrativa rättigheter: De delar i nedanstående kodexempel som handlar om swamiGmaiAssertion gäller hur man skickar vidare information om att en person har rättighet att vara administratör av certifikat. I det aktuella exemplet ger värdet urn:mace:swami.se:gmai:tcs:padm administratörsrättighet i TCS Personal och urn:mace:swami.se:gmai:tcs:eadm administratörsrättighet i TCS Personal eScience. Observera att personen måste även ha blivit delegerad i certifikatsportalen.

Code Block
<resolver:AttributeDefinition xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="idControll" dependencyOnly="true" >
     <resolver:Dependency ref="myLDAP" />
</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="swamiGmaiAssertion" dependencyOnly="true">
        <resolver:Dependency ref="myLDAP" />
    </resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="tcsPersonalEntitlement" >
     <resolver:Dependency ref="idControll" />
     <resolver:Dependency ref="swamiGmaiAssertion" />
     <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
     <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
     <Script>
          <![CDATA[
               importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
               tcsPersonalEntitlement = new BasicAttribute("tcsPersonalEntitlement");
               if ((idControll) && (idControll.getValues().contains("yes"))) {
                    tcsPersonalEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-user");
               }
               if (swamiGmaiAssertion) {
                    for (i=0; i < swamiGmaiAssertion.getValues().size(); i++) {
                         if (swamiGmaiAssertion.getValues().get(i).equals("urn:mace:swami.se:gmai:tcs:padm")) {
                              tcsPersonalEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-admin");
                         }
                    }
               }
          ]]>
     </Script>
</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="tcsPersonaleScienceEntitlement" >
     <resolver:Dependency ref="idControll" />
     <resolver:Dependency ref="swamiGmaiAssertion" />
     <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
     <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
     <Script>
          <![CDATA[
               importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
               tcsPersonaleScienceEntitlement = new BasicAttribute("tcsPersonaleScienceEntitlement");
               if ((idControll) && (idControll.getValues().contains("yes"))) {
                    tcsPersonaleScienceEntitlement.getValues().add("urn:mace:terena.org:tcs:escience-user");
               }
               if (swamiGmaiAssertion) {
                    for (i=0; i < swamiGmaiAssertion.getValues().size(); i++) {
                         if (swamiGmaiAssertion.getValues().get(i).equals("urn:mace:swami.se:gmai:tcs:eadm")) {
                              tcsPersonaleScienceEntitlement.getValues().add("urn:mace:terena.org:tcs:escience-admin");
                         }
                    }
               }
          ]]>
     </Script>
</resolver:AttributeDefinition>
Alternativ 2: Grupp används i LDAP för att visa att legitimationskontroll är genomförd (fungerar med Actice Directory)

Förutsättning: Om en person har genomgått legitimationskontroll är denne medlem i gruppen ID-kort.

Känd begränsning: Grupper i grupper fungerar inte.

Tillägg för administrativa rättigheter: De delar i nedanstående kodexempel som handlar om grupperna TCSpersonalAdmin och TCSpersonalEscienceAdmin gäller hur man skickar vidare information om att en person har rättighet att vara administratör av certifikat. I det aktuella exemplet ger gruppen TCSpersonalAdmin administratörsrättighet i TCS Personal och TCSpersonalEscienceAdmin administratörsrättighet i TCS Personal eScience. Observera att personen måste även ha blivit delegerad i certifikatsportalen.

Code Block
<resolver:AttributeDefinition xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="memberOf" dependencyOnly="true">
     <resolver:Dependency ref="myLDAP" />
</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="tcsPersonalEntitlement" >
     <resolver:Dependency ref="memberOf" />
     <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
     <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
     <Script>
          <![CDATA[
               importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
               tcsPersonalEntitlement = new BasicAttribute("tcsPersonalEntitlement");
               if (memberOf) {
                    for (i=0; i < memberOf.getValues().size(); i++) {
                         if (memberOf.getValues().get(i).equals("ID-kort")) {
                              tcsPersonalEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-user");
                         }
                         else if (memberOf.getValues().get(i).equals("TCSpersonalAdmin")) {
                              tcsPersonalEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-admin");
                         }
                    }
               }
          ]]>
     </Script>
</resolver:AttributeDefinition>
 
<resolver:AttributeDefinition xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="tcsPersonaleScienceEntitlement" >
<resolver:Dependency ref="memberOf" />
     <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
     <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
     <Script>
          <![CDATA[
               importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
               tcsPersonaleScienceEntitlement= new BasicAttribute("tcsPersonaleScienceEntitlement");
               if (memberOf) {
                    for (i=0; i < memberOf.getValues().size(); i++) {
                         if (memberOf.getValues().get(i).equals("ID-kort")) {
                              tcsPersonaleScienceEntitlement.getValues().add("urn:mace:terena.org:tcs:escience-user");
                         }
                         else if (memberOf.getValues().get(i).equals("TCSpersonalEscienceAdmin")) {
                              tcsPersonaleScienceEntitlement.getValues().add("urn:mace:terena.org:tcs:escience-admin");
                         }
                    }
               }
          ]]>
     </Script>
</resolver:AttributeDefinition>

Modifiera filen attribute-filter.xml enligt:

Code Block
<AttributeFilterPolicy id="releaseTcsPersonalEntitlement">
     <PolicyRequirementRule xsi:type="basic:OR">
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://tcs-personal.sunet.se/simplesamlphp/module.php/saml/sp/metadata.php/default-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString"  value="https://tcs-personal-portal.terena.org/simplesamlphp/module.php/saml/sp/metadata.php/default-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://sp.swamid.se/shibboleth" />
     </PolicyRequirementRule>
     <AttributeRule attributeID="tcsPersonalEntitlement">
          <PermitValueRule xsi:type="basic:ANY" />
     </AttributeRule>
</AttributeFilterPolicy>

<AttributeFilterPolicy id="releaseTcsPersonaleScienceEntitlement">
     <PolicyRequirementRule xsi:type="basic:OR">
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://tcs-escience.sunet.se/simplesamlphp/module.php/saml/sp/metadata.php/default-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://tcs-escience-portal.terena.org/simplesamlphp/module.php/saml/sp/metadata.php/default-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://sp.swamid.se/shibboleth" />
     </PolicyRequirementRule>
     <AttributeRule attributeID="tcsPersonaleScienceEntitlement">
          <PermitValueRule xsi:type="basic:ANY" />
     </AttributeRule>
</AttributeFilterPolicy>