Istruzioni per IDEM MDX

Le seguenti istruzioni devono essere utilizzate per recuperare i metadata dal servizio IDEM MDX.

Per tutte le configurazioni è stato scelto un valore di durata della cache pari a 1 ora (3600 secondi). Questa scelta è stata effettuata tenendo conto che tutti i metadata vengono firmati ogni ora ed il campo validUntil all’interno del file di metadata è pari a 48 ore.

Per quanto riguarda Shibboleth, è stato inserito un valore di maxCacheDuration pari a 48 ore (172800 secondi), con un valore di refreshDelayFactor pari a 0,025 al fine di ottenere, in caso di cambiamenti, l’aggiornamento dei metadata ogni ora, come per le altre configurazioni.

Le configurazioni formulano implicitamente una URL conforme al Metadata Query Protocol partendo dall’URL di base specificato.

Ad esempio, se l”entityID è https://wiki.idem.garr.it/rp, il provider richiederà la seguente risorsa:

https://mdx.idem.garr.it/idem/entities/https:%2F%2Fwiki.idem.garr.it%2Frp

Avvertimento

Cambia la URL di base rispetto al flusso di metadata di cui hai bisogno:

  • https://mdx.idem.garr.it/idem-test/ per la Federazione IDEM di Test

  • https://mdx.idem.garr.it/idem/ per la Federatione IDEM

  • https://mdx.idem.garr.it/edugain/ per l’Interfederazione IDEM + eduGAIN

Shibboleth IdP v.3.1+

Configura l’IdP per scaricare i Metadata della Federazione:

  1. Scarica il certificato della Federazione per verificare la firma posta sui metadata:

    wget https://mdx.idem.garr.it/idem-mdx-service-crt.pem -O /opt/shibboleth-idp/credentials/idem-mdx-service-crt.pem
    
  2. Controlla la validità del certificato:

    • openssl x509 -in /opt/shibboleth-idp/credentials/idem-mdx-service-crt.pem -fingerprint -sha1 -noout
      

      deve restituire: (sha1: 46:FC:EB:7B:D0:67:46:EA:0C:B1:B2:61:4C:DC:37:DA:BD:B4:8A:95)

    • openssl x509 -in /opt/shibboleth-idp/credentials/idem-mdx-service-crt.pem -fingerprint -md5 -noout
      

      deve restituire: (md5: 5D:19:CC:AA:1E:63:E9:50:9D:C7:BE:99:60:0F:1F:96)

  3. Modifica opportunamente il file di configurazione delle sorgenti di metadata SAML:

    vim /opt/shibboleth-idp/conf/metadata-providers.xml
    

    aggiungendo prima dell’ultimo </MetadataProvider> il seguente codice commentando/decommentando opportunamente il valore di <MetadataQueryProtocol> dipendentemente dal flusso di Metadata utilizzato:

    <!-- MDX Service -->
    
    <MetadataProvider id="DynamicEntityMetadata" xsi:type="DynamicHTTPMetadataProvider"
             connectionRequestTimeout="PT2S"
             connectionTimeout="PT2S"
             socketTimeout="PT4S"
             refreshDelayFactor="0.025"
             maxCacheDuration="PT48H">
       <!--
       Verify the signature on the root element of the metadata
       using a trusted metadata signing certificate.
       -->
       <MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true"
                   certificateFile="%{idp.home}/credentials/idem-mdx-service-crt.pem"/>
    
       <!--
       Require a validUntil XML attribute on the root element and
       make sure its value is no more than 3 days into the future.
       -->
       <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P3D"/>
    
       <!-- Base URL for MDQ -->
       <!-- IDEM Production Federation -->
       <!-- <MetadataQueryProtocol>https://mdx.idem.garr.it/idem/</MetadataQueryProtocol> -->
    
       <!-- IDEM Test Federation -->
       <MetadataQueryProtocol>https://mdx.idem.garr.it/idem-test/</MetadataQueryProtocol>
    
       <!-- eduGAIN -->
       <!-- <MetadataQueryProtocol>https://mdx.idem.garr.it/edugain/</MetadataQueryProtocol> -->
    </MetadataProvider>
    
  4. Effettua il riavvio del servizio shibboleth.MetadataResolverService per applicare la configurazione precedente:

    bash /opt/shibboleth-idp/bin/reload-service.sh -id shibboleth.MetadataResolverService
    

Shibboleth SP v3

Configura il SP per scaricare i Metadata della Federazione:

  1. Scarica il certificato della Federazione per verificare la firma posta sui metadata:

    wget https://mdx.idem.garr.it/idem-mdx-service-crt.pem -O /etc/shibboleth/idem-mdx-service-crt.pem
    
  2. Controlla la validità del certificato:

    • openssl x509 -in /etc/shibboleth/idem-mdx-service-crt.pem -fingerprint -sha1 -noout
      

      deve restituire: (sha1: 46:FC:EB:7B:D0:67:46:EA:0C:B1:B2:61:4C:DC:37:DA:BD:B4:8A:95)

    • openssl x509 -in /etc/shibboleth/idem-mdx-service-crt.pem -fingerprint -md5 -noout
      

      deve restituire: (md5: 5D:19:CC:AA:1E:63:E9:50:9D:C7:BE:99:60:0F:1F:96)

  3. Modifica opportunamente il file di configurazione principale:

    vim /etc/shibboleth/shibboleth2.xml
    

    aggiungendo prima dell’ultimo </MetadataProvider> il seguente codice:

    <!-- MDX Service -->
    
    <MetadataProvider type="MDQ" id="mdx" cacheDirectory="mdq-cache"
          baseUrl="https://mdx.idem.garr.it/idem-test/"
          maxCacheDuration="172800" refreshDelayFactor="0.025" ignoreTransport="true">
       <MetadataFilter type="RequireValidUntil" maxValidityInterval="259200"/>
       <MetadataFilter type="Signature" certificate="idem-mdx-service-crt.pem"/>
    </MetadataProvider>
    

    e cambiando opportunamente il valore di baseUrl dipendentemente dal flusso di Metadata utilizzato:

    • Federazione IDEM di Test: https://mdx.idem.garr.it/idem-test/

    • Federatione IDEM: https://mdx.idem.garr.it/idem/

    • Interfederazione IDEM + eduGAIN: https://mdx.idem.garr.it/edugain/

  4. Effettua un restart del demone shibd:

    sudo systemctl restart shibd
    

SimpleSAMLphp v.1.14+

Configura l’Identity Provider per scaricare i Metadata della Federazione:

  1. Modifica opportunamente il file di configurazione principale:

    vim /var/simplesamlphp/config/config.php
    

    andando a modificare la configurazione dei metadata.sources per aggiungere la fonte di metadata di MDQ, commentando/decommentando opportunamente il valore di server dipendentemente dal flusso di Metadata utilizzato:

    'metadata.sources' => [
       ['type' => 'flatfile'],
       ['type' => 'mdq',
          // IDEM Production Federation
          //'server' => 'https://mdx.idem.garr.it/idem',
          // IDEM Test Federation
          'server' => 'https://mdx.idem.garr.it/idem-test',
          // eduGAIN
          //'server' => 'https://mdx.idem.garr.it/edugain',
          'validateFingerprint' => '46:FC:EB:7B:D0:67:46:EA:0C:B1:B2:61:4C:DC:37:DA:BD:B4:8A:95',
          'cachedir' => '/var/simplesamlphp/mdq-cache',
          'cachelength' => 3600],
    ],
    

    Avvertimento

    è necessario che il modulo metarefresh sia disabilitato e che non sia presente alcun file nella cartella /metadata diverso da saml20-idp-hosted.php che contiene i metadata dell’IdP.

  2. Crea la cartella mdq-cache:

    • sudo mkdir /var/simplesamlphp/mdq-cache
      
    • chown www-data /var/simplesamlphp/mdq-cache
      
  3. Rimuovi i file non necessari:

    cd /var/simplesamlphp/metadata ; rm !(saml20-idp-hosted.php)
    

Configura il Service Provider per scaricare i Metadata della Federazione:

  1. Modifica opportunamente il file di configurazione principale:

    vim /var/simplesamlphp/config/config.php
    

    andando a modificare la configurazione dei metadata.sources per aggiungere la fonte di metadata di MDQ, commentando/decommentando opportunamente il valore di server dipendentemente dal flusso di Metadata utilizzato:

    'metadata.sources' => [
       ['type' => 'mdq',
          // IDEM Production Federation
          //'server' => 'https://mdx.idem.garr.it/idem',
          // IDEM Test Federation
          'server' => 'https://mdx.idem.garr.it/idem-test',
          // eduGAIN
          //'server' => 'https://mdx.idem.garr.it/edugain',
          'validateFingerprint' => '46:FC:EB:7B:D0:67:46:EA:0C:B1:B2:61:4C:DC:37:DA:BD:B4:8A:95',
          'cachedir' => '/var/simplesamlphp/mdq-cache',
          'cachelength' => 3600],
       ['type' => 'flatfile'],
    ],
    

    Avvertimento

    è necessario che il modulo metarefresh sia disabilitato e che non sia presente alcun file nella cartella /metadata diverso da saml20-idp-remote.php che contiene i metadata utilizzati per il discovery service locale.

  2. Crea la cartella mdq-cache:

    • sudo mkdir /var/simplesamlphp/mdq-cache
      
    • chown www-data /var/simplesamlphp/mdq-cache
      

Satosa

Configura IdP/SP per scaricare i Metadata della Federazione:

  1. Scarica il certificato della Federazione per verificare la firma posta sui metadata:

    wget https://mdx.idem.garr.it/idem-mdx-service-crt.pem -O /opt/satosa/etc/idem-mdx-service-crt.pem
    
  2. Controlla la validità del certificato:

    • openssl x509 -in /opt/satosa/etc/idem-mdx-service-crt.pem -fingerprint -sha1 -noout
      

      deve restituire: (sha1: 46:FC:EB:7B:D0:67:46:EA:0C:B1:B2:61:4C:DC:37:DA:BD:B4:8A:95)

    • openssl x509 -in /opt/satosa/etc/idem-mdx-service-crt.pem -fingerprint -md5 -noout
      

      deve restituire: (md5: 5D:19:CC:AA:1E:63:E9:50:9D:C7:BE:99:60:0F:1F:96)

  3. Dipendentemente dalla configurazione utilizzata per Satosa (backends/frontends), modifica il file di configurazione:

    1. Backends

      vim /opt/satosa/etc/plugins/backends/saml2_backend.yaml
      

      aggiungendo il seguente codice per la configurazione dei metadata:

      metadata:
         mdq:
         - { url: "https://mdx.idem.garr.it/idem-test/",
             cert: idem-mdx-service-crt.pem,
             freshness_period: P0Y0M0DT1H0M0S }
      

      e cambiando opportunamente il valore di url dipendentemente dal flusso di Metadata utilizzato:

      • Federazione IDEM di Test: https://mdx.idem.garr.it/idem-test/

      • Federatione IDEM: https://mdx.idem.garr.it/idem/

      • Interfederazione IDEM + eduGAIN: https://mdx.idem.garr.it/edugain/

    2. Frontends

      vim /opt/satosa/etc/plugins/frontends/saml2_frontend.yaml
      

      aggiungendo il seguente codice per la configurazione dei metadata:

      metadata:
         mdq:
         - { url: "https://mdx.idem.garr.it/idem-test/",
             cert: idem-mdx-service-crt.pem,
             freshness_period: P0Y0M0DT1H0M0S }
      

      e cambiando opportunamente il valore di url dipendentemente dal flusso di Metadata utilizzato:

      • Federazione IDEM di Test: https://mdx.idem.garr.it/idem-test/

      • Federatione IDEM: https://mdx.idem.garr.it/idem/

      • Interfederazione IDEM + eduGAIN: https://mdx.idem.garr.it/edugain/

Configurazione Shibboleth Embedded Discovery Service per MDX

Per utilizzare uno Shibboleth Embedded Discovery Service con il servizio MDX è necessario applicare una configurazione «ad hoc» come indicato nella sezione seguente.

Shibboleth EDS

DOC: https://shibboleth.atlassian.net/wiki/spaces/EDS10/overview

Configura l’EDS per l’utilizzo del file JSON della Federazione:

  1. Crea una cartella per ricavare il file JSON dal Jason Web Token fornito dalla federazione:

    sudo mkdir /opt/idem_jwt_to_json
    
  2. Scarica la chiave pubblica necessaria per la decodifica:

    sudo wget "https://mdx.idem.garr.it/idem-mdx-service-pubkey.pem" -O /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem
    

    e controllane la validità:

    • sudo openssl rsa -pubin -in /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem -pubout -outform DER | openssl sha1 -c
      

      deve restituire: ((stdin)= 30:75:93:37:d0:05:55:19:9f:76:e1:5a:73:db:45:7f:5e:66:11:4b)

    • sudo openssl rsa -pubin -in /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem -pubout -outform DER | openssl md5 -c
      

      deve restituire: ((stdin)= 84:5f:69:99:c5:f6:bb:e6:5f:ff:32:39:9a:a6:bb:85)

  3. Installa i moduli Python necessari per la decodifica:

    • Python >= 3.9:

      • sudo apt-get install python3-pip
        
      • sudo pip install pyjwt pyjwt[crypto] pem requests
        
    • Python >= 3.11:

      • sudo apt-get install python3-jwt python3-requests python3-pem
        
  4. Scarica il file decodeToken.py nella cartella /opt/idem_jwt_to_json:

    • cd /opt/idem_jwt_to_json
      
    • sudo wget https://registry.idem.garr.it/idem-conf/shibboleth/IDP4/decodeToken.py
      
    • sudo chmod +x decodeToken.py
      

    che contiene il seguente blocco di codice:

    #!/usr/bin/env python3
    
    import jwt
    import json
    import pem
    import sys, getopt
    import requests
    
    def main(argv):
       try:
          opts, args = getopt.getopt(sys.argv[1:], 'j:o:k:hd', ['jwt=','output=','publickey=','help','debug' ])
       except getopt.GetoptError as err:
          print (str(err))
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          print ("The JSON file will be put in the output directory")
          sys.exit(2)
    
       inputurl = None
       outputpath = None
       publickey = None
    
       for opt, arg in opts:
          if opt in ('-h', '--help'):
             print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
             print ("The JSON file will be put in the output directory")
             sys.exit()
          elif opt in ('-j', '--jwt'):
             inputurl = arg
          elif opt in ('-o', '--output'):
             outputpath = arg
          elif opt in ('-k', '--publickey'):
             publickey = arg
          elif opt == '-d':
             global _debug
             _debug = 1
          else:
             print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
             print ("The JSON file will be put in the output directory")
             sys.exit()
    
       if inputurl == None:
          print ("Token file is missing!\n")
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          sys.exit()
    
       if outputpath == None:
          print ("Output path is missing!\n")
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          sys.exit()
    
       if publickey == None:
          print ("Public Key path is missing!\n")
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          sys.exit()
    
       with open(publickey, 'r') as rsa_pubkey:
          pubkey = rsa_pubkey.read()
    
       jwt_token = requests.get(inputurl, allow_redirects=True)
       token = jwt_token.content
       decode = jwt.decode(token, pubkey, algorithms=["RS256"])
    
       x = decode["data"]
       json_decoded = json.dumps(x, indent = 4, ensure_ascii=False)
    
       result_path = open(outputpath, "w", encoding="utf-8")
       result_path.write(json_decoded)
       result_path.close()
    
    if __name__ == "__main__":
       main(sys.argv[1:])
    
  5. Crea un cronjob per aggiornare i file:

    vim /etc/cron.d/eds-refresh
    

    e aggiungi i seguenti jobs, dipendentemente dal flusso di Metadata e dalla DocumentRoot utilizzati (default: /var/www/html):

    • Federazione IDEM di Produzione:

      */30 * * * *   /opt/idem_jwt_to_json/decodeToken.py -j https://mdx.idem.garr.it/idem-token -o /var/www/html/idem-eds.json -k /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_json/jwt_to_json.log 2>&1
      
    • Interfederazione eduGAIN + IDEM:

      */30 * * * *   /opt/idem_jwt_to_json/decodeToken.py -j https://mdx.idem.garr.it/edugain2idem-token -o /var/www/html/edugain2idem-eds.json -k /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_json/jwt_to_json.log 2>&1
      

      versione senza loghi:

      */30 * * * *   /opt/idem_jwt_to_json/decodeToken.py -j https://mdx.idem.garr.it/edugain2idem-token-nologo -o /var/www/html/edugain2idem-eds-nologo.json -k /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_json/jwt_to_json.log 2>&1
      
    • Federazione IDEM di Test:

      */30 * * * *   /opt/idem_jwt_to_json/decodeToken.py -j https://mdx.idem.garr.it/idem-test-token -o /var/www/html/idem-test-eds.json -k /opt/idem_jwt_to_json/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_json/jwt_to_json.log 2>&1
      
  6. Modifica la configurazione di EDS:

    sudo vim /etc/shibboleth-ds/idpselect_config.js
    

    cambiando il valore di this.dataSource con il valore opportuno scelto fra:

    • Federazione IDEM di Test: /idem-test-eds.json

    • Federatione IDEM: /idem-eds.json

    • Interfederazione IDEM + eduGAIN: /edugain2idem-eds.json

    Avvertimento

    Il valore this.dataSource corrisponde alla URL della sorgente di dati del Discovery Service che contiene tutti gli IdP. Questa sorgente DEVE essere esposta dal web server del DS e, quindi, del Service Provider in cui viene integrato. All’interno di this.dataSource è possibile omettere sia il protocollo che la parte host del’URL (https://example.org). La sorgente di dati è un file JSON secondo lo schema definito in EDSDetails

SimpleSAMLphp

Configura la creazione dei file necessari all’EDS:

  1. Crea una cartella per ricavare il file JSON dal Jason Web Token fornito dalla federazione:

    sudo mkdir /opt/idem_jwt_to_php
    
  2. Scarica la chiave pubblica necessaria per la decodifica:

    sudo wget "https://mdx.idem.garr.it/idem-mdx-service-pubkey.pem" -O /opt/idem_jwt_to_php/idem-mdx-service-pubkey.pem
    

    e controllane la validità:

    • sudo openssl rsa -pubin -in /opt/idem_jwt_to_php/idem-mdx-service-pubkey.pem -pubout -outform DER | openssl sha1 -c
      

      deve restituire: ((stdin)= 30:75:93:37:d0:05:55:19:9f:76:e1:5a:73:db:45:7f:5e:66:11:4b)

    • sudo openssl rsa -pubin -in /opt/idem_jwt_to_php/idem-mdx-service-pubkey.pem -pubout -outform DER | openssl md5 -c
      

      deve restituire: ((stdin)= 84:5f:69:99:c5:f6:bb:e6:5f:ff:32:39:9a:a6:bb:85)

  3. Installa i moduli Python necessari per la decodifica:

    • Python >= 3.9:

      • sudo apt-get install python3-pip
        
      • sudo pip install pyjwt pyjwt[crypto] pem requests
        
    • Python >= 3.11:

      • sudo apt-get install python3-jwt python3-requests python3-pem
        
  4. Scarica il file decodeToken.py nella cartella /opt/idem_jwt_to_php:

    • cd /opt/idem_jwt_to_php
      
    • sudo wget https://registry.idem.garr.it/idem-conf/shibboleth/IDP4/decodeToken.py
      
    • sudo chmod +x decodeToken.py
      

    che contiene il seguente blocco di codice:

    #!/usr/bin/env python3
    
    import jwt
    import json
    import pem
    import sys, getopt
    import requests
    
    def main(argv):
       try:
          opts, args = getopt.getopt(sys.argv[1:], 'j:o:k:hd', ['jwt=','output=','publickey=','help','debug' ])
       except getopt.GetoptError as err:
          print (str(err))
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          print ("The JSON file will be put in the output directory")
          sys.exit(2)
    
       inputurl = None
       outputpath = None
       publickey = None
    
       for opt, arg in opts:
          if opt in ('-h', '--help'):
             print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
             print ("The JSON file will be put in the output directory")
             sys.exit()
          elif opt in ('-j', '--jwt'):
             inputurl = arg
          elif opt in ('-o', '--output'):
             outputpath = arg
          elif opt in ('-k', '--publickey'):
             publickey = arg
          elif opt == '-d':
             global _debug
             _debug = 1
          else:
             print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
             print ("The JSON file will be put in the output directory")
             sys.exit()
    
       if inputurl == None:
          print ("Token file is missing!\n")
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          sys.exit()
    
       if outputpath == None:
          print ("Output path is missing!\n")
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          sys.exit()
    
       if publickey == None:
          print ("Public Key path is missing!\n")
          print ("Usage: ./decodeToken.py -j <jwt_inputurl> -o <output_path> -k <publickey_path>")
          sys.exit()
    
       with open(publickey, 'r') as rsa_pubkey:
          pubkey = rsa_pubkey.read()
    
       jwt_token = requests.get(inputurl, allow_redirects=True)
       token = jwt_token.content
       decode = jwt.decode(token, pubkey, algorithms=["RS256"])
    
       x = decode["data"]
       json_decoded = json.dumps(x, indent = 4, ensure_ascii=False)
    
       result_path = open(outputpath, "w", encoding="utf-8")
       result_path.write(json_decoded)
       result_path.close()
    
    if __name__ == "__main__":
       main(sys.argv[1:])
    
  5. Scarica lo script per la conversione del file JSON in PHP:

    • cd /opt/idem_jwt_to_php
      
    • sudo wget https://registry.idem.garr.it/idem-conf/simplesamlphp/json_to_php_converter.php
      
    • sudo chmod +x json_to_php_converter.php
      

    che contiene il seguente blocco di codice:

    <?php
    $jsondata = file_get_contents('/opt/idem_jwt_to_php/edugain2idem-eds.json');
    
    if (!empty($jsondata)) {
       $entities = json_decode($jsondata, true);
       $text = '';
       $displaynames = '';
    
       foreach ($entities as $entity => $entityMetadata) {
    
          // remove the unused elements of json
          unset($entityMetadata['Logos']);
    
          $entityMetadata['entityid'] = $entityMetadata['entityID'];
          unset($entityMetadata['entityID']);
    
          $displaynames = $entityMetadata['DisplayNames'];
          unset($entityMetadata['DisplayNames']);
    
          if (!empty($displaynames)) {
                   $entityMetadata['name'] = array();
    
                   foreach ($displaynames as $displayname => $entityName) {
    
                         $entityMetadata['name'][$entityName['lang']] = $entityName['value'];
    
                   }
          }
          $text .= '$metadata['.var_export($entityMetadata['entityid'], true).'] ='.
                   var_export($entityMetadata, true).";\n";
    
          $entities = $text;
       }
    }
    
    $file = '/var/simplesamlphp/metadata/saml20-idp-remote.php';
    file_put_contents($file,"<?php\n");
    file_put_contents($file, print_r($entities, true),FILE_APPEND);
    ?>
    

    e modifica il valore di file_get_contents dipendentemente dal flusso utilizzato:

    • Federazione IDEM di Test: /opt/idem_jwt_to_php/idem-test-eds.json

    • Federazione IDEM di Produzione: /opt/idem_jwt_to_php/idem-eds.json

    • Interfederazione eduGAIN + IDEM: /opt/idem_jwt_to_php/edugain2idem-eds.json

  6. Crea un cronjob per aggiornare i file:

    vim /etc/cron.d/eds-refresh
    

    e aggiungi i seguenti jobs, dipendentemente dal flusso utilizzato:

    • Federazione IDEM di Produzione:

      */30 * * * * root  /opt/idem_jwt_to_php/decodeToken.py -j https://mdx.idem.garr.it/idem-token -o /opt/idem_jwt_to_php/idem-eds.json -k /opt/idem_jwt_to_php/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_php/jwt_to_php.log 2>&1
      
      */30 * * * * root  /usr/bin/php /opt/idem_jwt_to_php/json_to_php_converter.php
      
    • Interfederazione eduGAIN + IDEM:

      */30 * * * * root  /opt/idem_jwt_to_php/decodeToken.py -j https://mdx.idem.garr.it/edugain2idem-token -o /opt/idem_jwt_to_php/edugain2idem-eds.json -k /opt/idem_jwt_to_php/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_php/jwt_to_php.log 2>&1
      
      */30 * * * * root  /usr/bin/php /opt/idem_jwt_to_php/json_to_php_converter.php
      
    • Federazione IDEM di Test:

      */30 * * * * root  /opt/idem_jwt_to_php/decodeToken.py -j https://mdx.idem.garr.it/idem-test-token -o /opt/idem_jwt_to_php/idem-test-eds.json -k /opt/idem_jwt_to_php/idem-mdx-service-pubkey.pem > /opt/idem_jwt_to_php/jwt_to_php.log 2>&1
      
      */30 * * * * root  /usr/bin/php /opt/idem_jwt_to_php/json_to_php_converter.php
      

Aggregati di Metadata IDEM

Nel caso in cui si voglia visualizzare l’aggregato di metadata, è possibile scaricarlo di seguito:

Federazione IDEM

Aggregato per la Federazione IDEM: https://mdx.idem.garr.it/idem/entities

Interfederazione eduGAIN (+ IDEM)

Aggregato per l’interfederazione eduGAIN (+ IDEM): https://mdx.idem.garr.it/edugain/entities

Federazione IDEM Test

Aggregato per la Federazione IDEM di Test: https://mdx.idem.garr.it/idem-test/entities

Downloads

Certificato Firma Metadata

https://mdx.idem.garr.it/idem-mdx-service-crt.pem

Chiave Pubblica per decodifica JWT

https://mdx.idem.garr.it/idem-mdx-service-pubkey.pem