Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Proveïdors de Servei

Per a connectar un servei a la federació de CSUCde CSUC, s'ha de disposar d'un component anomenat Proveïdor de Servei (SP) que  que implementi almenys un dels següents protocols suportats per la federació:

  • SAML 2.0
    • Perfil WebSSO
  • SAML 1.1/Shibboleth 1.3
  • PAPI
  • CAS

Es recomana l'ús del protocol SAML 2protocol SAML 2.0 sempre que sigui possible.

Proveïdors de Servei SAMLServei SAML

La configuració d'un Proveïdor de Servei que implementa el protocol SAML 2 o SAML 1protocol SAML 2 o SAML 1.1 en la federació CSUC es federació CSUC es realitza a través de l'enviament de les seves metadades, els quals han de reflectir els següents elements i atributs en el document XML:

  • //md:EntityDescriptor/@*entityID: és necessari que existeixi un element <EntityDescriptor> l'atribut del qual entityID indiqui com és el seu ID d'entitat unívoc en la federació.
  • //md:EntityDescriptor/*ds:Signature: és molt recomanable necessari que existeixi una signatura XML que validi el contingut de la descripció de l'entitat, de manera que el responsable del Proveïdor de Servei s'asseguri que la configuració no serà alterada (com a mínim en sha256).
  • //md:EntityDescriptor/*md:SPSSODescriptor: és necessari que contingui un únic element <SPSSODescriptor> que descrigui la configuració del Proveïdor de Servei SAML 2.

Dins de l'element //md:EntityDescriptor/*md:SPSSODescriptor és important que existeixin la següent informació relativa al Proveïdor de Servei:

  • /md:KeyDescriptor: és necessari que existeixi almenys un element <KeyDescriptor> que especifiqui el certificat digital per a signar o xifrar missatges SAML 2i xifrar missatges SAML 2.
  • /md:AssertionConsumerService: és necessari que existeixi almenys un element <AssertionConsumerService>.

Dins de l'element //md:EntityDescriptor/*mdui:UIInfo és  és important que existeixin la següent informació d'interfície d'usuari relativa al Proveïdor de Servei:

  • /mdui:DisplayName: indica el nom del Proveïdor de Servei a mostrar a l'usuari en les interfícies d'usuari, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Ha d'existir almenys un element <DisplayName> i no és possible indicar més d'un valor per a un mateix idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol.
  • /mdui:Description: ofereix una descripció curta del Proveïdor de Servei que serà mostrada a l'usuari en les interfícies d'usuari, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Ha d'existir almenys un element <Description> i no és possible indicar més d'un valor per a un mateix idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol.
  • /mdui:Logo: indica la localització en format URI del format URI del logo del Proveïdor de Servei, on es requereix indicar obligatóriamente lindicar obligatóriamente l'alt i l'ample d'aquest. Opcionalment és possible indicar també l'idioma, per si es volgués mostrar un logo diferent en funció de l'idioma de la interfície d'usuari, però ha d'existir almenys un element sense idioma que s'utilitzarà com a opcional. Poden indicar-se diferents elements <Logo> que representin al mateix logo però amb grandàries diferents, i s'han de tenir en compte els següents suggeriments:
    • S'ha d'utilitzar fons transparent.
    • S'ha d'utilitzar el format PNG sempre que format PNG sempre que sigui possible.
    • S'han d'utilitzar URLsutilitzar URLs sota HTTPS, per a evitar missatges d'error de determinats navegadors.
  • /mdui:InformationURL: indica una URL amb informació ampliada a la indicada en la descripció, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol, i s'han de tenir en compte el següent suggeriment:
    • S'han d'utilitzar URLsutilitzar URLs sota HTTPS, per a evitar missatges d'error de determinats navegadors.
  • /mdui:PrivacyStatementURL: indica una URL amb informació sobre la privacitat en el tractament de la informació de l'usuari en el Proveïdor de Servei, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol, i s'han de tenir en compte el següent suggeriment:
    • S'han d'utilitzar URLsutilitzar URLs sota HTTPS, per a evitar missatges d'error de determinats navegadors.

Els espais de nom utilitzats en les expressions XPath anteriors expressions XPath anteriors són:

  • md md = urn urn:oasi:names:tc:SAML:2.0:metadata
  • ds ds = http://www.w3.org/2000/09/xmldsig#

Un exemple de metadades per a un SP SAML 2un SP SAML 2:

Code Block
languagexml
linenumberstrue
<?xml version="1.0" encoding="utf-8"?>
<md:EntityDescriptor
  xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
  xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
  entityID="https://sp.example.org/shibboleth-sp">
  <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol">
	<md:Extensions>
      <mdui:UIInfo>
        <mdui:DisplayName xml:lang="ca">Servei</mdui:DisplayName>
        <mdui:DisplayName xml:lang="es">Servicio</mdui:DisplayName>
        <mdui:DisplayName xml:lang="en">Service</mdui:DisplayName>
        <mdui:Description xml:lang="ca">Descripció del servei</mdui:Description>
        <mdui:Description xml:lang="es">Descripción del servicio</mdui:Description>
        <mdui:Description xml:lang="en">Service description</mdui:Description>
        <mdui:Logo height="16" width="16">https://www.example.com/resources/images/smalllogo.png</mdui:Logo>
        <mdui:Logo height="97" width="172">https://www.example.com/resources/images/logo.png</mdui:Logo>
        <mdui:InformationURL xml:lang="ca">http://www.example.com</mdui:InformationURL>
        <mdui:InformationURL xml:lang="es">http://www.example.com/es</mdui:InformationURL>
        <mdui:InformationURL xml:lang="en">http://www.example.com/en</mdui:InformationURL>
        <mdui:PrivacyStatementURL xml:lang="ca">http://www.example.com/privacy.html</mdui:PrivacyStatementURL>
        <mdui:PrivacyStatementURL xml:lang="es">http://www.example.com/es/privacy.html</mdui:PrivacyStatementURL>
        <mdui:PrivacyStatementURL xml:lang="en">http://www.example.com/en/privacy.html</mdui:PrivacyStatementURL>
      </mdui:UIInfo>
    </md:Extensions>
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MII…ksFe7Pg=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:KeyDescriptor use="encryption">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MIICs…Fe7Pg=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
    <md:NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</md:NameIDFormat>
    <md:AssertionConsumerService index="1" isDefault="true"
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Location="https://sp.example.org/Shibboleth.sso/SAML2/POST"/>
    <md:AssertionConsumerService index="2"
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
      Location="https://sp.example.org/Shibboleth.sso/SAML2/POST-SimpleSign"/>
    <md:AssertionConsumerService index="3"
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
      Location="https://sp.example.org/Shibboleth.sso/SAML2/Artifact"/>
    <md:AssertionConsumerService index="4"
      Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"
      Location="https://sp.example.org/Shibboleth.sso/SAML/POST"/>
    <md:AssertionConsumerService index="5"
      Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"
      Location="https://sp.example.org/Shibboleth.sso/SAML/Artifact"/>
  </md:SPSSODescriptor>
  <md:Organization>
    <md:OrganizationName xml:lang="en">Your Service</md:OrganizationName>
    <md:OrganizationDisplayName xml:lang="en">Your Service</md:OrganizationDisplayName>
    <md:OrganizationURL xml:lang="en">http://sp.example.org/</md:OrganizationURL>
  </md:Organization>
  <md:ContactPerson contactType="technical">
    <md:GivenName>Your</md:GivenName>
    <md:SurName>Admin</md:SurName>
    <md:EmailAddress>admin@example.org</md:EmailAddress>
  </md:ContactPerson>
</md:EntityDescriptor>

Altres Proveïdors de Servei

La configuració d'un Proveïdor de Servei que implementa un altre tipus de protocol, com per exemple CAS o PAPIexemple CAS o PAPI, es realitzarà enviant les dades de configuració directament als administradors de la federació.

Proveïdors d'Identitat

Requisits de les metadades

Les metadades han de ser creats conformes a l'estàndard Metadata for the OASI Security Assertion Markup Language (SAML) V2.0 i a més hauran d'implementar les següents extensions de metadades SAML 2metadades SAML 2:

El document de metadades ha de reflectir els següents elements i atributs:

  • //md:EntityDescriptor/@*entityID: és necessari que existeixi un element <EntityDescriptor> l'atribut del qual entityID indiqui com és el seu ANEU d'entitat unívoc en la federació.
  • //md:EntityDescriptor/*ds:Signature: és necessari que existeixi una signatura XML que validi el contingut de la descripció de l'entitat, de manera que el responsable del Proveïdor d'Identitat s'asseguri que la configuració no serà alterada (com a mínim en sha256).
  • //md:EntityDescriptor/*md:Extensions/*shibmd:Scope: és necessari que existeixi almenys un element <Scope> indicant el valor permès per als atributs que utilitzin aquesta informació, com per exemple exemple eduPersonScopedAffiliation.
  • //md:EntityDescriptor/*md:Extensions/*mdui:UIInfo: és necessari que existeixi un element <UIInfo> que indiqui informació necessària per la interfície d'usuari de la federació.
  • //md:EntityDescriptor/*md:IDPSSODescriptor: és necessari que contingui un únic element <IDPSSODescriptor> que descrigui la configuració del Proveïdor d'Identitat SAML 2Identitat SAML 2.
  • //md:EntityDescriptor/*md:Organization: és necessari que contingui un únic element <Organization> que especifiqui informació bàsica sobre l'organització responsable del Proveïdor d'Identitat SAML 2Identitat SAML 2.
  • //md:EntityDescriptor/*md:ContactPerson: és necessari que contingui almenys dos elements <ContactPerson> que indiquin les persones de contacte a nivell tècnic i de suport sent per a això el valor del seu atribut contactType com technical i support respectivament.

Dins de l'element //md:EntityDescriptor/*md:IdPSSODescriptor és  és important que existeixin la següent informació relativa al Proveïdor d'Identitat:

  • /md:KeyDescriptor: és necessari que existeixi almenys un element <KeyDescriptor> que especifiqui el certificat digital per a signar o xifrar missatges SAML 2i xifrar missatges SAML 2.
  • /md:NameIDFormat: és necessari que existeixi almenys un element <NameIDFormat> i el valor del qual sigui urn:oasi:names:tc:SAML:2.0:nameid-*format:transient, ja que el hub de el hub de la federació sempre enviarà el missatge sol·licitant aquest format per al NameID per al NameID per a les respostes SAML 2 enviades pel IdPrespostes SAML 2 enviades pel IdP.
  • /md:SingleSignOnService: és necessari que existeixi almenys un element <SingleSignOnService>.

Dins de l'element //md:EntityDescriptor/*mdui:UIInfo és important  és necessari que existeixin la següent informació d'interfície d'usuari relativa al Proveïdor d'Identitat:

  • /mdui:DisplayName: indica el nom del Proveïdor d'Identitat a mostrar a l'usuari en les interfícies d'usuari, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Ha d'existir almenys un element <DisplayName> i no és possible indicar més d'un valor per a un mateix idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol.
  • /mdui:Description: ofereix una descripció curta del Proveïdor d'Identitat que serà mostrada a l'usuari en les interfícies d'usuari, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Ha d'existir almenys un element <Description> i no és possible indicar més d'un valor per a un mateix idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol.
  • /mdui:Logo: indica la localització en format URI del format URI del logo del Proveïdor d'Identitat, on es requereix indicar obligatóriamente lindicar obligatóriamente l'alt i l'ample d'aquest. Opcionalment és possible indicar també l'idioma, per si es volgués mostrar un logo diferent en funció de l'idioma de la interfície d'usuari, però ha d'existir almenys un element sense idioma que s'utilitzarà com a opcional. Poden indicar-se diferents elements <Logo> que representin al mateix logo però amb grandàries diferents, i s'han de tenir en compte els següents suggeriments:
    • S'ha d'utilitzar fons transparent.
    • S'ha d'utilitzar el format PNG sempre format PNG sempre que sigui possible.
    • S'han d'utilitzar URLsutilitzar URLs sota HTTPS, per a evitar missatges d'error de determinats navegadors.
  • /mdui:InformationURL: indica una URL amb informació ampliada a la indicada en la descripció, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol, i s'han de tenir en compte el següent suggeriment:
    • S'han d'utilitzar URLsutilitzar URLs sota HTTPS, per a evitar missatges d'error de determinats navegadors.
  • /mdui:PrivacyStatementURL: indica una URL amb informació sobre la privacitat en el tractament de la informació de l'usuari en el Proveïdor d'Identitat, indicant en el seu atribut obligatoriatribut obligatori xml:lang per a quin idioma. Es recomana que s'emetin valors per als idiomes català, anglès i espanyol, i s'han de tenir en compte el següent suggeriment:
    • S'han d'utilitzar URLsutilitzar URLs sota HTTPS, per a evitar missatges d'error de determinats navegadors.

Els espais de nom utilitzats en les expressions XPath anteriors expressions XPath anteriors són:

  • md md = urn urn:oasi:names:tc:SAML:2.0:metadata
  • ds ds = http://www.w3.org/2000/09/xmldsig#
  • shibmd shibmd = urn urn:mace:shibboleth:metadata:1.0
  • mdui mdui = urn urn:oasi:names:tc:SAML:metadata:ui

Un exemple de metadades per a un IdP SAML 2un IdP SAML 2:

Code Block
languagexml
linenumberstrue
<md:EntityDescriptor
  xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
  xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui"
  xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
  entityID="http://www.example.com/SAML2/"
  ID="pfx95d1a532-dc6a-c243-fbd8-8499ec0841ab">
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
      <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
      <ds:Reference URI="#pfx95d1a532-dc6a-c243-fbd8-8499ec0841ab">
        <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <ds:DigestValue>b3aPLZjq5DxCDcn/0zXKK1ByRO8=</ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>YB1Z2exuGJ…zNtxhsw/CqXLdpRg4B+Z44=</ds:SignatureValue>
    <ds:KeyInfo>
      <ds:X509Data>
        <ds:X509Certificate>MIICsDC…lyRLhksFe7Pg=</ds:X509Certificate>
      </ds:X509Data>
    </ds:KeyInfo>
  </ds:Signature>
  <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:Extensions>
      <shibmd:Scope xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" regexp="false">example.com</shibmd:Scope>
      <mdui:UIInfo>
        <mdui:DisplayName xml:lang="ca">Nom organització</mdui:DisplayName>
        <mdui:DisplayName xml:lang="es">Nombre organización</mdui:DisplayName>
        <mdui:DisplayName xml:lang="en">Org name</mdui:DisplayName>
        <mdui:Description xml:lang="ca">Servei d'autenticació de l'organització</mdui:Description>
        <mdui:Description xml:lang="es">Servicio de autenticación de la organización</mdui:Description>
        <mdui:Description xml:lang="en">Authentication service organization</mdui:Description>
        <mdui:Logo height="16" width="16">https://www.example.com/resources/images/smalllogo.png</mdui:Logo>
        <mdui:Logo height="97" width="172">https://www.example.com/resources/images/logo.png</mdui:Logo>
        <mdui:InformationURL xml:lang="ca">http://www.example.com</mdui:InformationURL>
        <mdui:InformationURL xml:lang="es">http://www.example.com/es</mdui:InformationURL>
        <mdui:InformationURL xml:lang="en">http://www.example.com/en</mdui:InformationURL>
        <mdui:PrivacyStatementURL xml:lang="ca">http://www.example.com/privacy.html</mdui:PrivacyStatementURL>
        <mdui:PrivacyStatementURL xml:lang="es">http://www.example.com/es/privacy.html</mdui:PrivacyStatementURL>
        <mdui:PrivacyStatementURL xml:lang="en">http://www.example.com/en/privacy.html</mdui:PrivacyStatementURL>
      </mdui:UIInfo>
    </md:Extensions>
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MII…ksFe7Pg=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:KeyDescriptor use="encryption">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MIICs…Fe7Pg=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:SingleLogoutService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
      Location="http://www.example.com/SAML2/SLOService.php"/>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
    <md:SingleSignOnService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
      Location="http://www.example.com/SAML2/SSOService.php"/>
    <md:SingleSignOnService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Location="http://www.example.com/SAML2/SSOService.php"/>
  </md:IDPSSODescriptor>
  <md:Organization>
    <md:OrganizationName xml:lang="ca">Nom organització</md:OrganizationName>
    <md:OrganizationDisplayName xml:lang="ca">Nom organització</md:OrganizationDisplayName>
    <md:OrganizationURL xml:lang="ca">http://www.example.com/</md:OrganizationURL>
  </md:Organization>
  <md:ContactPerson contactType="technical">
    <md:GivenName>Your</md:GivenName>
    <md:SurName>Contact</md:SurName>
    <md:EmailAddress>admin@example.com</md:EmailAddress>
  </md:ContactPerson>
  <md:ContactPerson contactType="support">
    <md:GivenName>Your</md:GivenName>
    <md:SurName>Other contact</md:SurName>
    <md:EmailAddress>support@example.com</md:EmailAddress>
  </md:ContactPerson>
</md:EntityDescriptor>