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 Testhttps://mdx.idem.garr.it/idem/
per la Federatione IDEMhttps://mdx.idem.garr.it/edugain/
per l’Interfederazione IDEM + eduGAIN
Shibboleth IdP v.3.1+¶
Configura l’IdP per scaricare i Metadata della Federazione:¶
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
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)
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>
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:¶
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
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)
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/
Effettua un restart del demone
shibd
:sudo systemctl restart shibd
SimpleSAMLphp v.1.14+¶
Configura l’Identity Provider per scaricare i Metadata della Federazione:¶
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 diserver
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 dasaml20-idp-hosted.php
che contiene i metadata dell’IdP.Crea la cartella
mdq-cache
:sudo mkdir /var/simplesamlphp/mdq-cache
chown www-data /var/simplesamlphp/mdq-cache
Rimuovi i file non necessari:
cd /var/simplesamlphp/metadata ; rm !(saml20-idp-hosted.php)
Configura il Service Provider per scaricare i Metadata della Federazione:¶
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 diserver
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 dasaml20-idp-remote.php
che contiene i metadata utilizzati per il discovery service locale.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:¶
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
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)
Dipendentemente dalla configurazione utilizzata per Satosa (backends/frontends), modifica il file di configurazione:
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/
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:¶
Crea una cartella per ricavare il file JSON dal Jason Web Token fornito dalla federazione:
sudo mkdir /opt/idem_jwt_to_json
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)
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
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:])
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
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 dithis.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:¶
Crea una cartella per ricavare il file JSON dal Jason Web Token fornito dalla federazione:
sudo mkdir /opt/idem_jwt_to_php
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)
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
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:])
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
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