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 ge handläggare vid lärosätet tillgång till NyA-webben.
För frågor kring dokumentationen nedan kontakta operations snabel-a SWAMID.SE

Note

Denna sida är under uppbyggnad och är ännu varken fullständig eller testad!

NyA-webben är ett nytt och enklare sätt att ta fram vissa uppgifter ur NyA. Den är ett
komplement till den s k expertklienten, och vänder sig i första hand till personal vid
institutioner (motsvarande) men kan även vara till nytta för andra användargrupper.

...

Inloggning och rollhantering sker med hjälp av idenitetsfedartionen identitetsfederationen SWAMID mot den lokala identitetshanteraren för respektive lärosäte. Användare av
expertklienten använder även i fortsättningen traditionellt användarkonto i NyA.

I denna den första version versionen kommer NyA-webben ha två olika s.k. roller.:

  • Basanvändare: Kan titta på sökandes meriter, anmälningar och dokument.
  • Institutionsanvändare – utdata: Kan skapa listor och statistik för sökande,
    antagna och reserver för en eller institutioner.

 Dokument Dokument från VHS som beskriver rollhantering i NyA:

...

  1. Lärosätet har en IdP uppsatt som är medlem i SWAMID (Om frågor - kontakta operations snabel-a SWAMID.SE), för mer information se HowTo Shibboleth 2.x IdP.
  2. Attribut skickas till samtliga SP i Swamid enligt wikisidan SWAMID HowTo (Shibboleth 2.x). Särsklt Särskilt att tänka på är att attributen eduPersonPrincipalName (eppn) och commonName (cn) ska överföras till NyA-webben tillsammans med rollerna.
  3. VHS SP för NyA-webben är medlem i SWAMID med (namnet) XXXX https://www.antagning.se/ecs-sp och testsystemen är medlemmar i testfederationen med namnen https://www.antagning.testa.antagning.se/ecs-sp och https://www.antagning.testb.antagning.se/ecs-sp.

Rekommenderad arbetsgång

  1. Modifiera attribute-resolvern för din IdP så att den inkluderar rättighet att använda NyA-webben enligt nedan beskrivet format (eduPersonEntitlement (epe)), se sidan SWAMID HowTo (Shibboleth 2.x).
  2. Modifiera attribute-release policy för din IdP enligt kod nedan. Syftet är att tillåta ivägskickande av behörighetsinformation till VHS SAMT för test sp.swamid.se
  3. Verifiera mot sp.swamid.se att ni ser namn, e-postadress, rättighet (entitlement) och unik identitet (eduPersonPrincipalName (eppn)).
  4. Kontakta VHS för att få sin IdP inlagd i NyA-webben - appldrift_saml snabel-a VHS.SE.
  5. Verifiera att inloggning med behörigheter fungerar via aktuell inloggningslänk som VHS tillhandahåller.

...

Alternativ 1: Särskilt attribut finns i LDAP för att visa att en användare har en eller flera roller i NyA-webben
Note

Avsnittet ännu ej klart!

...

Känd begränsning:

...

  • Endast rättigheten basanvändare är implementerad i detta skript.

Nedan finns ett skript som transformerar rollattributet swamiGmaiAssertion till rättighetsattributet eduPersonEntitlement inkl. namnbyte på applikationen (NyA -> nya-dw) och tillägg av organisationskod för lärosätet. Skriptet är inte heller begränsat till rollerna basanvändare och institutionsanvändare utan kan hantera alla framtida roller i NyA-webben så länge de följer samma attribututformning som dessa.

Förutsättningar:

  • När detta skrivs finns två roller NyA-webben, basanvändare och institutionsanvändare.
  • Basanvändare (titta på info, meriter, anmälningar och dokument för sökande) är inte kopplat till institution:
    • I LDAP finns attributet swamiGmaiAssertion med värdet "urn:mace:swami.se:gmai:NyA:base".
    • Till NyA-webben skickas attributet eduPersonEntitlement med värdet "urn:mace:swami.se:gmai:nya-dw:base:o=YY".
  • Institutionsanvändare - utdata (skapa listor och statistik) är kopplad till institution:
    • I LDAP finns attributet swamiGmaiAssertion med värdet "urn:mace:swami.se:gmai:NyA:department:ladokInstitutionskod=ZZZZ".
    • Till NyA-webben skickas attributet eduPersonEntitlement med värdet "urn:mace:swami.se:gmai:nya-dw:department:o=YY:norEduOrgUnitUniqueNumber=ZZZZ".
  • YY är lärosätes kod i NyA, t.ex. UU.
  • ZZZZ är en institutionskod, t.ex. 4010, som användaren har rätt att företräda för aktuell roll i NyA-webben.
Code Block

Code Block

<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="NyAwebbenEntitlement" >
     <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);

               //NyAwebbenEntitlement Definiera= lärosäteskod i NyAnew BasicAttribute("NyAwebbenEntitlement");
               larosatekod = newif String("YY");
swamiGmaiAssertion) {
               NyAwebbenEntitlement = new BasicAttribute("NyAwebbenEntitlement");
  for (i=0; i < swamiGmaiAssertion.getValues().size(); i++) {
       if (swamiGmaiAssertion) {
                    forif (i=0; i < swamiGmaiAssertion.getValues().get(i).size(); i++search("urn:mace:swami.se:gmai:NyA:") != -1) {

                            // Basanvändare ej begränsad till enskild institutionif (swamiGmaiAssertion.getValues().get(i).search(":ladokInstitutionskod=") != -1) {
                         if (          NyAwebbenEntitlement.getValues().add(swamiGmaiAssertion.getValues().get(i).equals("urn:mace:swami.se:gmai:NyA:base")) {
replace(":NyA:", ":nya-dw:").replace(":ladokInstitutionskod=", ":o=YY:norEduOrgUnitUniqueNumber="));
                              }
                              else {
                                   NyAwebbenEntitlement.getValues().add(String.concat(swamiGmaiAssertion.getValues().get(i).replace("urn:mace:swami.se:gmaiNyA:", ":nya-dw:base") + ":o=YY",larosatekod));
                              }
                         }
                    }
               }
          ]]>
     </Script>
</resolver:AttributeDefinition>

Alternativ 2: Grupper i LDAP används för att visa att en användare har en eller flera roller i NyA-webben (fungerar med Actice Directory)

...

...

Avsnittet ännu ej klart!

Förutsättningar:
  • När detta skrivs finns två roller NyA-webben, basanvändare och institutionsanvändare.
  • Basanvändare (titta på info, meriter, anmälningar och dokument för sökande) är inte kopplat till institution:
    • eduPersonEntitlement: urn:mace:swami.se:gmai:nya-dw:base:o=YY
    • Medlemmar i gruppen "NyA-webben-Base" ska få rollen när de loggar in i NyA-webben.
    Institutionsanvändare - utdata (skapa listor och statistik):
    • eduPersonEntitlement: Till NyA-webben skickas attributet eduPersonEntitlement med värdet "urn:mace:swami.se:gmai:nya-dw:departmentbase:o=YY:norEduOrgUnitUniqueNumber=ZZZZ".
  • Institutionsanvändare - utdata (skapa listor och statistik) är kopplad till institution:
    • Medlemmar i gruppen "NyA-webben-Department-ZZZZ" för institution ZZZZ ska få rollen för angiven institutionskod när de loggar in i NyA-webben.
    • Till NyA-webben skickas attributet eduPersonEntitlement med värdet "urn:mace:swami.se:gmai:nya-dw:department:o=YY:norEduOrgUnitUniqueNumber=ZZZZ".
  • YY är lärosätes kod i NyA, t.ex. UU.
  • ZZZZ är en institutionskod, t.ex. 4010, som användaren har rätt att företräda för aktuell roll i NyA-webben.

...

Känd begränsning:

...

  • Grupper i grupper fungerar inte.
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="NyAwebbenEntitlement" >
     <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);

               // Definiera lärosäteskod i NyA
               larosatekod = new String("YY");

               // Definiera grupp för basanvändare
               baseGroup = new String("NyA-webben-Base");

               // Definiera grupprefix för de olika rollerna
               deparmentGroupPrefix = new String("NyA-webben-Department-");

               NyAwebbenEntitlement = new BasicAttribute("NyAwebbenEntitlement");
               if (memberOf) {
                    for (i=0; i < memberOf.getValues().size(); i++) {

                         // Basanvändare ej begränsad till enskild institution
                         if (memberOf.getValues().get(i).equals(baseGroup)) {
                              NyAwebbenEntitlement.getValues().add(String.concat("urn:mace:swami.se:gmai:nya-dw:base:o=", + larosatekod));
                         }

                         // Institutionsanvändare begränsat till enskild institution via gruppnamnet
                         else if (DeparmentGroupPrefixdeparmentGroupPrefix.equals(memberOf.getValues().get(i).substring(0,DeparmentPrefixdeparmentGroupPrefix.length()-1))) {
                              NyAwebbenEntitlement.getValues().add(String.concat("urn:mace:swami.se:gmai:nya-dw:department:o=",larosatekod, + larosatekod + ":norEduOrgUnitUniqueNumber=", + memberOf.getValues().get(i).substring(DeparmentPrefixdeparmentGroupPrefix.length(),memberOf.getValues().get(i).length())));
                         }
                    }
               }
          ]]>
     </Script>
</resolver:AttributeDefinition>

...

Code Block
<AttributeFilterPolicy id="releaseNyAwebbenEntitlement">
     <PolicyRequirementRule xsi:type="basic:OR">
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://expert.antagning.se/ecs-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://www.antagning.testa.antagning.se/ecs-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="XXXXhttps://www.antagning.testb.antagning.se/ecs-sp" />
          <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://sp.swamid.se/shibboleth" />
     </PolicyRequirementRule>
     <AttributeRule attributeID="NyAwebbenEntitlement">
          <PermitValueRule xsi:type="basic:ANY" />
     </AttributeRule>
</AttributeFilterPolicy>