diff --git a/README.md b/README.md index adbef9446dcbcab64d7e183de25842f80c48ff28..19ae16e49b22583d37f6abdcf27bf5f68b813f6e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # HOWTO Install and Configure ECCS-2 -* `sudo apt install python3 python3-pip chromium chromium-l10n git` +* `sudo apt install python3 python3-pip chromium chromium-l10n git libapache2-mod-wsgi python3-dev` * `python3 -m pip install --user --upgrade pip virtualenv` * `python3 -m venv eccs2venv` * `source eccs2venv/bin/activate` (`deactivate` di exit Virtualenv) @@ -11,7 +11,7 @@ # API * `/eccs/test` (Trivial Test) -* `/eccs/checks` (Should return the results of the last checks) +* `/eccs/checks` (Return the results of the last checks) * `/eccs/checks?<parameter>=<value>`: * `date=2020-02-20` (select date) * `idp=Any%20words%20do%20you%20like%20url%20encoded` @@ -21,7 +21,10 @@ * 'No-eduGAIN-Metadata' * 'Form-Invalid' * 'Excluded' +* /eccs/eccsresults (Return the results of the last check ready for ECCS Gui) # API Development Server +* `sudo apt install libapache2-mod-wsgi-py3 python3-dev` +* `sudo a2enmod wsgi` * `cd ~/eccs2 ; ./api.py` diff --git a/api.py b/api.py index 3d047e3a29cf8ac8e8ec994317320434e37a5c86..b0b3b619c3a4aec22ea7180dfcd1befb3ba6b0b5 100755 --- a/api.py +++ b/api.py @@ -88,7 +88,7 @@ class Checks(Resource): idp = request.args['idp'] app.logger.info(idp) - fo = open(file_path, "r") + fo = open(file_path,"r",encoding="utf-8") result = [] lines = fo.readlines() @@ -138,12 +138,180 @@ class Checks(Resource): return jsonify(pp_json) else: return jsonify(result) - + + +# Build Email Addresses Link for ECCS2 Web Gui +def buildEmailAddress(listContacts): + + listCtcs = listContacts.split(",") + hrefList = [] + + for email in listCtcs: + hrefList.append("<a href='%s'>%s</a>" % (email,email.replace('mailto:', ''))) + + return hrefList + +class EccsResults(Resource): + def get(self): + app.logger.info("Request 'EccsResults'") + + file_path = "logs/eccs2_2020-03-01.log" + date = PurePath(file_path).parts[-1].split('_')[1].split('.')[0] + pretty = 0 + status = None + idp = None + + if 'date' in request.args: + app.logger.info("'date' parameter inserted") + file_path = "logs/eccs2_"+request.args['date']+".log" + date = request.args['date'] + if 'pretty' in request.args: + app.logger.info("'pretty' parameter inserted") + pretty = request.args['pretty'] + if 'status' in request.args: + app.logger.info("'status' parameter inserted") + status = request.args['status'] + if 'idp' in request.args: + app.logger.info("'idp' parameter inserted") + idp = request.args['idp'] + app.logger.info(idp) + + fo = open(file_path,"r",encoding="utf-8") + result = [] + lines = fo.readlines() + + for line in lines: + # Line: + # IdP-DisplayName; check[0] + # IdP-entityID; check[1] + # IdP-RegAuth; check[2] + # IdP-tech-ctc-1,IdP-tech-ctc-2; check[3] + # IdP-supp-ctc-1,IdP-supp-ctc-2; check[4] + # Status; check[5] + # SP-entityID-1; check[6] + # SP-status-1; check[7] + # SP-entityID-2; check[8] + # SP-status-2 check[9] + check = line.split(";") + + idp_displayname = check[0].rstrip("\n\r") + idp_entity_id = check[1].rstrip("\n\r") + idp_reg_auth = check[2].rstrip("\n\r") + idp_tech_ctcs = check[3].rstrip("\n\r") + idp_supp_ctcs = check[4].rstrip("\n\r") + idp_checks_status = check[5].rstrip("\n\r") + sp1_entity_id = check[6].rstrip("\n\r") + sp1_check_status = check[7].rstrip("\n\r") + sp2_entity_id = check[8].rstrip("\n\r") + sp2_check_status = check[9].rstrip("\n\r") + + if (idp and status): + app.logger.info("Results for the idp '%s' with status '%s'" % (idp, status)) + if (idp == idp_entity_id and status == idp_checks_status): + result.append( + { + 'displayName' : idp_displayname, + 'entityID' : idp_entity_id, + 'registrationAuthority' : idp_reg_auth, + 'contacts' : { + 'technical' : buildEmailAddress(idp_tech_ctcs), + 'support' : buildEmailAddress(idp_supp_ctcs), + }, + 'date' : date, + 'sp1' : { + 'entityID' : sp1_entity_id, + 'status' : sp1_check_status + }, + 'sp2' : { + 'entityID' : sp2_entity_id, + 'status' : sp2_check_status + }, + 'status' : idp_checks_status + } ) + elif (idp): + #app.logger.info(re.search(".*."+idp+".*.", idp_entity_id, re.IGNORECASE)) + #app.logger.info(idp_entity_id)) + app.logger.info("Results for IdP '%s'." % idp) + if (re.search(".*."+idp+".*.", idp_entity_id, re.IGNORECASE)): + result.append( + { + 'displayName' : idp_displayname, + 'entityID' : idp_entity_id, + 'registrationAuthority' : idp_reg_auth, + 'contacts' : { + 'technical' : buildEmailAddress(idp_tech_ctcs), + 'support' : buildEmailAddress(idp_supp_ctcs), + }, + 'date' : date, + 'sp1' : { + 'entityID' : sp1_entity_id, + 'status' : sp1_check_status + }, + 'sp2' : { + 'entityID' : sp2_entity_id, + 'status' : sp2_check_status + }, + 'status' : idp_checks_status + } ) + elif (status): + app.logger.info("Results for status '%s'." % status) + if (status == idp_checks_status): + result.append( + { + 'displayName' : idp_displayname, + 'entityID' : idp_entity_id, + 'registrationAuthority' : idp_reg_auth, + 'contacts' : { + 'technical' : buildEmailAddress(idp_tech_ctcs), + 'support' : buildEmailAddress(idp_supp_ctcs), + }, + 'date' : date, + 'sp1' : { + 'entityID' : sp1_entity_id, + 'status' : sp1_check_status + }, + 'sp2' : { + 'entityID' : sp2_entity_id, + 'status' : sp2_check_status + }, + 'status' : idp_checks_status + } ) + else: + app.logger.info("All checks.") + result.append( + { + 'displayName' : idp_displayname, + 'entityID' : idp_entity_id, + 'registrationAuthority' : idp_reg_auth, + 'contacts' : { + 'technical' : buildEmailAddress(idp_tech_ctcs), + 'support' : buildEmailAddress(idp_supp_ctcs), + }, + 'date' : date, + 'sp1' : { + 'entityID' : sp1_entity_id, + 'status' : sp1_check_status + }, + 'sp2' : { + 'entityID' : sp2_entity_id, + 'status' : sp2_check_status + }, + 'status' : idp_checks_status + } ) + + if (pretty): + pp_json = dumps(result, indent=4, sort_keys=True) + return jsonify(pp_json) + else: + return jsonify(result) + api.add_resource(Test, '/eccs/test') # Route_1 api.add_resource(Checks, '/eccs/checks') # Route_2 +api.add_resource(EccsResults, '/eccs/eccsresults') # Route_3 if __name__ == '__main__': + app.config['JSON_AS_ASCII'] = False app.logger = getLogger("logs/eccs2api.log","INFO") app.run(port='5002') diff --git a/eccs2.py b/eccs2.py index ffe8b8dc4bf0170f42b873b369db87dab0ae80b2..150211788cdf98aa0a908f4e9bf590917e32f851 100755 --- a/eccs2.py +++ b/eccs2.py @@ -11,15 +11,6 @@ import logging Questo script funziona SOLO con SP aventi Embedded Discovery Service come DS. """ -def logFile(idp,content): - path = idp+".txt" - - f = open(path,'w') - f.write(content) - - f.close() - - def getIdpListFromUrl(): import certifi import urllib3 @@ -40,7 +31,7 @@ def getIdpListFromUrl(): def getIdpListFromFile(): import json - with open('list_eccs_idps-idem.txt') as f: + with open('list_eccs_idps-idem.txt','r',encoding='utf-8') as f: json_data = json.loads(f.read()) return json_data @@ -71,15 +62,15 @@ def checkIdP(sp,idp,logger): entities_blacklist = ['https://idp.eie.gr/idp/shibboleth','https://gn-vho.grnet.gr/idp/shibboleth','https://wtc.tu-chemnitz.de/shibboleth','https://wtc.tu-chemnitz.de/shibboleth','https://idp.fraunhofer.de/idp/shibboleth','https://login.hs-owl.de/nidp/saml2/metadata','https://idp.dfn-cert.de/idp/shibboleth'] if (idp['entityID'] in entities_blacklist): - logger.info("%s;%s;IdP excluded from checks") + logger.info("%s;%s;IdP excluded from checks" % (idp['entityID'],sp)) driver.close() driver.quit() - return "Disabled" + return "DISABLED" if (idp['registrationAuthority'] in federation_blacklist): - logger.info("%s;%s;Federation excluded from checks") + logger.info("%s;%s;Federation excluded from checks" % (idp['entityID'],sp)) driver.close() driver.quit() - return "Disabled" + return "DISABLED" # Open SP, select the IDP from the EDS and press 'Enter' to reach the IdP login page to check try: @@ -151,11 +142,25 @@ def getLogger(filename,log_level="DEBUG",path="./"): return logger + +# Return a list of email address for a specific type of contact +def getIdPContacts(idp,contactType): + + ctcList = [] + for ctcType in idp['contacts']: + if (ctcType == contactType): + for ctc in idp['contacts'][contactType]: + ctcList.append(ctc['emailOrPhone']['EmailAddress'][0]) + + return ctcList + # MAIN if __name__=="__main__": - eccs2log = getLogger("logs/eccs2_"+date.today().isoformat()+".log","INFO") - eccs2checksLog = getLogger("logs/eccs2checks_"+date.today().isoformat()+".log","INFO") + day = date.today().isoformat() + + eccs2log = getLogger("logs/eccs2_"+day+".log","INFO") + eccs2checksLog = getLogger("logs/eccs2checks_"+day+".log","INFO") sps = ["https://sp24-test.garr.it/secure", "https://attribute-viewer.aai.switch.ch/eds/"] @@ -167,11 +172,47 @@ if __name__=="__main__": for sp in sps: result.append(checkIdP(sp,idp,eccs2checksLog)) + listTechContacts = getIdPContacts(idp,'technical') + listSuppContacts = getIdPContacts(idp,'support') + + strTechContacts = ','.join(listTechContacts) + strSuppContacts = ','.join(listSuppContacts) + # If all checks are 'OK', than the IdP consuming correctly eduGAIN Metadata. if (result[0] == result[1] == "OK"): - eccs2log.info("IdP '%s' results: OK" % (idp['entityID'])) + # IdP-DisplayName;IdP-entityID;IdP-RegAuth;IdP-tech-ctc-1,IdP-tech-ctc-2;IdP-supp-ctc-1,IdP-supp-ctc-2;Status;SP-entityID-1;SP-status-1;SP-entityID-2;SP-status-2 + eccs2log.info("%s;%s;%s;%s;%s;%s;%s;%s;%s;%s" % ( + idp['displayname'].split(';')[1].split('==')[0], + idp['entityID'], + idp['registrationAuthority'], + strTechContacts, + strSuppContacts, + 'OK', + sps[0], + result[0], + sps[1], + result[1])) elif (result[0] == result[1] == "DISABLED"): - eccs2log.info("IdP '%s' results: DISABLED" % (idp['entityID'])) + eccs2log.info("%s;%s;%s;%s;%s;%s;%s;%s;%s;%s" % ( + idp['displayname'].split(';')[1].split('==')[0], + idp['entityID'], + idp['registrationAuthority'], + strTechContacts, + strSuppContacts, + 'DISABLE', + sps[0], + result[0], + sps[1], + result[1])) else: - eccs2log.info("IdP '%s' results: ERROR" % (idp['entityID'])) - + eccs2log.info("%s;%s;%s;%s;%s;%s;%s;%s;%s;%s" % ( + idp['displayname'].split(';')[1].split('==')[0], + idp['entityID'], + idp['registrationAuthority'], + strTechContacts, + strSuppContacts, + 'ERROR', + sps[0], + result[0], + sps[1], + result[1])) diff --git a/web/data.json b/web/data.json new file mode 100644 index 0000000000000000000000000000000000000000..1ae6f086c52d37897d65960eaaf0cfd467625ef6 --- /dev/null +++ b/web/data.json @@ -0,0 +1 @@ +[{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:system.support@garr.it'>system.support@garr.it</a>"]},"date":"2020-03-01","displayName":"GARR - Direzione","entityID":"https://idp.dir.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@uniparthenope.it'>idem@uniparthenope.it</a>"]},"date":"2020-03-01","displayName":"Università di Napoli Parthenope","entityID":"https://idp.uniparthenope.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:supporto.identity@unimore.it'>supporto.identity@unimore.it</a>"]},"date":"2020-03-01","displayName":"University of Modena e Reggio Emilia","entityID":"https://idp.unimore.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"PROD - IDP in the Cloud Project (GARR)","entityID":"https://garr-idp-prod.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS IOV Istituto Oncologico Veneto","entityID":"https://idp-iov.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IZS Sicilia","entityID":"https://idp-sicilia.izs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:alessia.ventani@uniurb.it'>alessia.ventani@uniurb.it</a>","<a href='mailto:marco.cappellacci@uniurb.it'>marco.cappellacci@uniurb.it</a>"]},"date":"2020-03-01","displayName":"Urbino University","entityID":"https://idp.uniurb.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:marco@csita.unige.it'>marco@csita.unige.it</a>"]},"date":"2020-03-01","displayName":"University of Genoa","entityID":"https://unigepass.unige.it/idp","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@ifc.cnr.it'>idem@ifc.cnr.it</a>"]},"date":"2020-03-01","displayName":"CNR Institute of Clinical Physiology","entityID":"https://idea.ifc.cnr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"No-eduGAIN-Metadata"},"status":"ERROR"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unipv.it'>idem@unipv.it</a>"]},"date":"2020-03-01","displayName":"University of Pavia","entityID":"https://idp.unipv.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:michele.lugli@unife.it'>michele.lugli@unife.it</a>","<a href='mailto:enrico.ardizzoni@unife.it'>enrico.ardizzoni@unife.it</a>","<a href='mailto:reti.sistemi@unife.it'>reti.sistemi@unife.it</a>"]},"date":"2020-03-01","displayName":"University of Ferrara","entityID":"https://identity.unife.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:silvio.scipioni@cnr.it'>silvio.scipioni@cnr.it</a>","<a href='mailto:supporto.idp@cnr.it'>supporto.idp@cnr.it</a>","<a href='mailto:stefano.colagreco@cnr.it'>stefano.colagreco@cnr.it</a>"]},"date":"2020-03-01","displayName":"National Research Council (CNR)","entityID":"https://idp.cnr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:iit-idem@iit.cnr.it'>iit-idem@iit.cnr.it</a>"]},"date":"2020-03-01","displayName":"CNR Institute of Informatics and Telematics","entityID":"https://idp.iit.cnr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:fbellati@iuav.it'>fbellati@iuav.it</a>","<a href='mailto:matteo@iuav.it'>matteo@iuav.it</a>","<a href='mailto:idem@iuav.it'>idem@iuav.it</a>"]},"date":"2020-03-01","displayName":"University IUAV Venezia","entityID":"https://idp.iuav.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"No-eduGAIN-Metadata"},"status":"ERROR"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unimib.it'>idem@unimib.it</a>"]},"date":"2020-03-01","displayName":"University of Milano-Bicocca","entityID":"https://idp.unimib.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:gigiacom@unive.it'>gigiacom@unive.it</a>"]},"date":"2020-03-01","displayName":"Ca' Foscari University of Venice","entityID":"https://idp.unive.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem@ilc.cnr.it'>idem@ilc.cnr.it</a>"],"technical":["<a href='mailto:idem@ilc.cnr.it'>idem@ilc.cnr.it</a>","<a href='mailto:idem@ilc.cnr.it'>idem@ilc.cnr.it</a>"]},"date":"2020-03-01","displayName":"CNR Institute for Computational Linguistics \"Antonio Zampolli\"","entityID":"https://idem-idp.ilc.cnr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:comunicazioni.aai@unitn.it'>comunicazioni.aai@unitn.it</a>","<a href='mailto:comunicazioni.aai@unitn.it'>comunicazioni.aai@unitn.it</a>"]},"date":"2020-03-01","displayName":"University of Trento","entityID":"https://idp.unitn.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:postmaster@unibg.it'>postmaster@unibg.it</a>"]},"date":"2020-03-01","displayName":"University of Bergamo","entityID":"https://idp.unibg.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:giuseppe.vitagliano@unina.it'>giuseppe.vitagliano@unina.it</a>","<a href='mailto:contactcenter@unina.it'>contactcenter@unina.it</a>"]},"date":"2020-03-01","displayName":"University of Naples Federico II","entityID":"https://idemshibb.unina.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:roberto.gaffuri@polimi.it'>roberto.gaffuri@polimi.it</a>","<a href='mailto:idem@polimi.it'>idem@polimi.it</a>"]},"date":"2020-03-01","displayName":"Politecnico di Milano","entityID":"https://shibidp.polimi.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:urt@unicampania.it'>urt@unicampania.it</a>"]},"date":"2020-03-01","displayName":"Second University of Naples","entityID":"https://idem.unina2.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:servicedesk@cineca.it'>servicedesk@cineca.it</a>"]},"date":"2020-03-01","displayName":"CINECA Inter-University Consortium","entityID":"https://idp-staf-prod.cineca.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:dorsale@unisalento.it'>dorsale@unisalento.it</a>"]},"date":"2020-03-01","displayName":"University of Salento","entityID":"https://idem.unisalento.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"ICCU - Central Institute for the Union Catalogue","entityID":"https://idp-iccu.beniculturali.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:aai-support@lists.infn.it'>aai-support@lists.infn.it</a>"],"technical":["<a href='mailto:Enrico.M.V.Fasanelli@le.infn.it'>Enrico.M.V.Fasanelli@le.infn.it</a>","<a href='mailto:Dael.Maselli@lnf.infn.it'>Dael.Maselli@lnf.infn.it</a>"]},"date":"2020-03-01","displayName":"INFN - National Institute for Nuclear Physics","entityID":"https://idp.infn.it/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@fmach.it'>idem@fmach.it</a>"]},"date":"2020-03-01","displayName":"Edmund Mach Foundation - Istituto Agrario di San Michele all'Adige","entityID":"https://login.fmach.eu/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:support-idem@unict.it'>support-idem@unict.it</a>"]},"date":"2020-03-01","displayName":"University of Catania","entityID":"https://idpunict.unict.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@istat.it'>idem@istat.it</a>"]},"date":"2020-03-01","displayName":"ISTAT - Italian National Institute of Statistics","entityID":"https://id.istat.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem-help@univpm.it'>idem-help@univpm.it</a>"]},"date":"2020-03-01","displayName":"University of Politecnica delle Marche","entityID":"https://idp.univpm.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS CRO di Aviano","entityID":"https://idp-cro.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:sistemi@ateneo.univr.it'>sistemi@ateneo.univr.it</a>"]},"date":"2020-03-01","displayName":"University of Verona","entityID":"https://giasso.univr.it/idp/idem","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unisi.it'>idem@unisi.it</a>"]},"date":"2020-03-01","displayName":"University of Siena","entityID":"https://shibboleth.unisi.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:luigi.gatto@poliba.it'>luigi.gatto@poliba.it</a>","<a href='mailto:giuseppe.lucatorto@poliba.it'>giuseppe.lucatorto@poliba.it</a>"],"technical":["<a href='mailto:idem-support@poliba.it'>idem-support@poliba.it</a>"]},"date":"2020-03-01","displayName":"Politecnico di Bari","entityID":"https://idp.poliba.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem-support@unical.it'>idem-support@unical.it</a>"]},"date":"2020-03-01","displayName":"UNICAL - University of Calabria","entityID":"https://idp.unical.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem-support@ccd.uniroma2.it'>idem-support@ccd.uniroma2.it</a>"]},"date":"2020-03-01","displayName":"University of Rome Tor Vergata","entityID":"https://idem.uniroma2.eu/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"No-eduGAIN-Metadata"},"status":"ERROR"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Eugenio Medea","entityID":"https://idp-emedea.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem-help@unirc.it'>idem-help@unirc.it</a>"],"technical":["<a href='mailto:idem.tech.support@unirc.it'>idem.tech.support@unirc.it</a>"]},"date":"2020-03-01","displayName":"Mediterranea University of Reggio Calabria","entityID":"https://idpi.unirc.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idp@unime.it'>idp@unime.it</a>"]},"date":"2020-03-01","displayName":"University of Messina","entityID":"https://minosse.unime.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IZS del Mezzogiorno","entityID":"https://idp-portici.izs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem-support@unipa.it'>idem-support@unipa.it</a>"]},"date":"2020-03-01","displayName":"University of Palermo","entityID":"https://idp.unipa.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:rete@unipmn.it'>rete@unipmn.it</a>"]},"date":"2020-03-01","displayName":"University of Piemonte Orientale","entityID":"https://idemidp.unipmn.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:info-idem@csp.it'>info-idem@csp.it</a>"]},"date":"2020-03-01","displayName":"CSP - innovation in ICT","entityID":"https://idp.csp.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Associazione Oasi Maria SS. Onlus","entityID":"https://idp-oasi.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@ogs.trieste.it'>idem@ogs.trieste.it</a>"]},"date":"2020-03-01","displayName":"National Institute of Oceanography and Experimental Geophysics","entityID":"https://idp01.ogs.trieste.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@izs.it'>idem@izs.it</a>","<a href='mailto:idem@izs.it'>idem@izs.it</a>"]},"date":"2020-03-01","displayName":"Istituto Zooprofilattico Sperimentale dell'Abruzzo e del Molise \"G. Caporale\"","entityID":"https://idp.izs.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"No-eduGAIN-Metadata"},"status":"ERROR"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:staff@uniba.it'>staff@uniba.it</a>"]},"date":"2020-03-01","displayName":"University of Bari Aldo Moro","entityID":"https://idpuniba.uniba.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:helpdesk@sssup.it'>helpdesk@sssup.it</a>"]},"date":"2020-03-01","displayName":"Scuola Superiore Sant'Anna","entityID":"https://idp.sssup.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:servizio.idem@unipg.it'>servizio.idem@unipg.it</a>"]},"date":"2020-03-01","displayName":"University of Perugia","entityID":"https://idp.unipg.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unibocconi.it'>idem@unibocconi.it</a>"]},"date":"2020-03-01","displayName":"Bocconi University","entityID":"https://idp.unibocconi-prod.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:ict_servicedesk@iit.it'>ict_servicedesk@iit.it</a>"]},"date":"2020-03-01","displayName":"IIT - Istituto Italiano di Tecnologia","entityID":"https://idp.iit.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:csia.sistemi@unimc.it'>csia.sistemi@unimc.it</a>"],"technical":["<a href='mailto:francesco.ciclosi@unimc.it'>francesco.ciclosi@unimc.it</a>"]},"date":"2020-03-01","displayName":"University of Macerata","entityID":"https://idp.unimc.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unipr.it'>idem@unipr.it</a>"]},"date":"2020-03-01","displayName":"University of Parma","entityID":"https://shibidp.unipr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:webmaster@imtlucca.it'>webmaster@imtlucca.it</a>"]},"date":"2020-03-01","displayName":"IMT Institute for Advanced Studies Lucca","entityID":"https://idem-idp.imtlucca.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Fondazione Stella Maris","entityID":"https://idp-stellamaris.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Fondazione Don Carlo Gnocchi Onlus","entityID":"https://idp-dgnocchi.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Casa Sollievo della Sofferenza","entityID":"https://idp-css.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:helpdesk@sissa.it'>helpdesk@sissa.it</a>"],"technical":["<a href='mailto:ritossa@sissa.it'>ritossa@sissa.it</a>"]},"date":"2020-03-01","displayName":"SISSA - Scuola Internazionale Superiore di Studi Avanzati","entityID":"https://idp.sissa.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:federazioni@tlc.uniroma3.it'>federazioni@tlc.uniroma3.it</a>"],"technical":["<a href='mailto:idem@uniroma3.it'>idem@uniroma3.it</a>"]},"date":"2020-03-01","displayName":"Roma TRE University","entityID":"https://idp.uniroma3.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:supporto.sso@unipd.it'>supporto.sso@unipd.it</a>"]},"date":"2020-03-01","displayName":"University of Padova","entityID":"https://shibidp.cca.unipd.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem-help@unica.it'>idem-help@unica.it</a>"]},"date":"2020-03-01","displayName":"Cagliari State University","entityID":"https://idp.unica.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:m.nanni@ira.inaf.it'>m.nanni@ira.inaf.it</a>","<a href='mailto:f.tinarelli@ira.inaf.it'>f.tinarelli@ira.inaf.it</a>","<a href='mailto:inaf-idem@ced.inaf.it'>inaf-idem@ced.inaf.it</a>"]},"date":"2020-03-01","displayName":"National Institute for Astrophysics - INAF","entityID":"https://idem.ced.inaf.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unifi.it'>idem@unifi.it</a>"]},"date":"2020-03-01","displayName":"University of Florence","entityID":"https://shibboleth.unifi.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@units.it'>idem@units.it</a>"]},"date":"2020-03-01","displayName":"University of Trieste","entityID":"https://idemfero.units.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem@unipi.it'>idem@unipi.it</a>"],"technical":["<a href='mailto:servizi@ticket.unipi.it'>servizi@ticket.unipi.it</a>"]},"date":"2020-03-01","displayName":"University of Pisa","entityID":"https://idp.unipi.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:portale-supporto@unito.it'>portale-supporto@unito.it</a>"]},"date":"2020-03-01","displayName":"University of Turin","entityID":"https://idp-unito-prod.cineca.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:cesia-sso-support@unibo.it'>cesia-sso-support@unibo.it</a>"]},"date":"2020-03-01","displayName":"University of Bologna","entityID":"https://shib.unibo.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"SSABAP RM - Soprintendenza Speciale Archeologia Belle Arti e Paesaggio di Roma","entityID":"https://idp-ssbar.beniculturali.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:infrastrutture.informatiche@unistrapg.it'>infrastrutture.informatiche@unistrapg.it</a>","<a href='mailto:Fabrizio.Ortolani@unistrapg.it'>Fabrizio.Ortolani@unistrapg.it</a>"]},"date":"2020-03-01","displayName":"University for Foreigners Perugia","entityID":"https://idp.unistrapg.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"No-eduGAIN-Metadata"},"status":"ERROR"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:sistemi@iulm.it'>sistemi@iulm.it</a>"]},"date":"2020-03-01","displayName":"International University of Languages and Media","entityID":"https://idp.iulm.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:support@unint.eu'>support@unint.eu</a>"],"technical":["<a href=''></a>"]},"date":"2020-03-01","displayName":"Università degli Studi Internazionali di Roma - UNINT","entityID":"https://idp.unint.eu/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:ict@eurac.edu'>ict@eurac.edu</a>"]},"date":"2020-03-01","displayName":"Europäischen Akademie Bozen","entityID":"https://idp.eurac.edu/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"Invalid Form"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"ERROR"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:marco.maccari@unicam.it'>marco.maccari@unicam.it</a>","<a href='mailto:support_idem@unicam.it'>support_idem@unicam.it</a>"]},"date":"2020-03-01","displayName":"University of Camerino","entityID":"https://idp.unicam.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:it@unibz.it'>it@unibz.it</a>"]},"date":"2020-03-01","displayName":"Freie Universität Bozen","entityID":"https://idp.unibz.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem-support@ifo.gov.it'>idem-support@ifo.gov.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS IFO - Rome","entityID":"https://idp-ifo.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:dir.scient@inrca.it'>dir.scient@inrca.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS INRCA - Ancona","entityID":"https://idp-inrca.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:segreteriascientifica@sanraffaele.it'>segreteriascientifica@sanraffaele.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS San Raffaele Pisana - Rome","entityID":"https://idp-srpisana.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:sancamillo.idem@ospedalesancamillo.net'>sancamillo.idem@ospedalesancamillo.net</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Fondazione Ospedale San Camillo - Venice","entityID":"https://idp-scamillo.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:segreteria.scientifica@icsmaugeri.it'>segreteria.scientifica@icsmaugeri.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS ICS Maugeri - Pavia","entityID":"https://idp-maugeri.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:garr@sdn-napoli.it'>garr@sdn-napoli.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS SDN - Napoli","entityID":"https://idp-sdn.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idp_support@auxologico.it'>idp_support@auxologico.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Istittuto Auxologico Italiano - Milano","entityID":"https://idp-aux.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:postmaster@unicas.it'>postmaster@unicas.it</a>"]},"date":"2020-03-01","displayName":"University of Cassino","entityID":"https://idp.unicas.it/simplesaml/saml2/idp/metadata.php","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:supportoidem@istitutotumori.na.it'>supportoidem@istitutotumori.na.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Pascale - Napoli","entityID":"https://idp-intna.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:biblioteca@oncologico.bari.it'>biblioteca@oncologico.bari.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Istituto Tumori \"Giovanni Paolo II\" - Bari","entityID":"https://idp-istba.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:enzo.capenti@isprambiente.it'>enzo.capenti@isprambiente.it</a>","<a href='mailto:giulio.carcani@isprambiente.it'>giulio.carcani@isprambiente.it</a>"],"technical":["<a href='mailto:luigi.gasbarro@isprambiente.it'>luigi.gasbarro@isprambiente.it</a>"]},"date":"2020-03-01","displayName":"ISPRA Istituto Superiore per la Protezione e Ricerca Ambientale","entityID":"https://idp.isprambiente.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:helpdesk.irccs@fatebenefratelli.eu'>helpdesk.irccs@fatebenefratelli.eu</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS FBF - Brescia","entityID":"https://idp-fbf.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:direzionescientifica@irccsdebellis.it'>direzionescientifica@irccsdebellis.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS \"S. de Bellis\" - Castellana Grotte (BARI)","entityID":"https://idp-debellis.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:sabato.melillo@unisannio.it'>sabato.melillo@unisannio.it</a>"]},"date":"2020-03-01","displayName":"University of Sannio","entityID":"https://idp.unisannio.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:supporto_idp@ismett.edu'>supporto_idp@ismett.edu</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS ISMETT - Palermo","entityID":"https://idp-ismett.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:ict.sa@ieo.it'>ict.sa@ieo.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS IEO - Milano","entityID":"https://idp-ieo.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idp@ego-gw.it'>idp@ego-gw.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"EGO - European Gravitational Observatory","entityID":"https://idp.ego-gw.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:servizio.informativo@burlo.trieste.it'>servizio.informativo@burlo.trieste.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Burlo Garofolo - Trieste","entityID":"https://idp-burlog.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@uniud.it'>idem@uniud.it</a>"]},"date":"2020-03-01","displayName":"University of Udine","entityID":"https://idem-idp.uniud.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href=''></a>"],"technical":["<a href='mailto:idem@unisa.it'>idem@unisa.it</a>"]},"date":"2020-03-01","displayName":"University of Salerno","entityID":"https://auth.unisa.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:sistemi.informativi@hsanmartino.it'>sistemi.informativi@hsanmartino.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS San Martino University Hospital","entityID":"https://idp-ospedalesanmartino.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:bioingegneria@neuromed.it'>bioingegneria@neuromed.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Neuromed Pozzilli (IS)","entityID":"https://idp-neuromed.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idpcloud@crob.it'>idpcloud@crob.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS CROB - Rionero in Vulture (PZ)","entityID":"https://idp-crob.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idp@smatteo.pv.it'>idp@smatteo.pv.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS San Matteo - Pavia","entityID":"https://idp-sanmatteo.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:support-idp@ausl.bologna.it'>support-idp@ausl.bologna.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Istituto delle Scienze Neurologiche - Bologna","entityID":"https://idp-isnb.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:sis@cardiologicomonzino.it'>sis@cardiologicomonzino.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Centro Cardiologico Monzino - Milano","entityID":"https://idp-ccmonz.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem@policlinico.mi.it'>idem@policlinico.mi.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS OMP Ca' Granda - Milano","entityID":"https://idp-omp-mi.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem-help@iss.it'>idem-help@iss.it</a>"],"technical":["<a href='mailto:marco.tallon@iss.it'>marco.tallon@iss.it</a>"]},"date":"2020-03-01","displayName":"ISS - Istituto Superiore di Sanità","entityID":"https://idem.iss.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:grant.office@hsantalucia.it'>grant.office@hsantalucia.it</a>"],"technical":["<a href='mailto:idpcloud-service@garr.it'>idpcloud-service@garr.it</a>"]},"date":"2020-03-01","displayName":"IRCCS Santa Lucia - Roma","entityID":"https://idp-slucia.irccs.garr.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"},{"contacts":{"support":["<a href='mailto:idem@inrim.it'>idem@inrim.it</a>"],"technical":["<a href=''></a>"]},"date":"2020-03-01","displayName":"INRiM - Istituto Nazionale di Ricerca Metrologica","entityID":"https://idp.inrim.it/idp/shibboleth","registrationAuthority":"http://www.idem.garr.it/","sp1":{"entityID":"https://sp24-test.garr.it/secure","status":"OK"},"sp2":{"entityID":"https://attribute-viewer.aai.switch.ch/eds/","status":"OK"},"status":"OK"}] diff --git a/web/details_close.png b/web/details_close.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7d6982d9a1408f24278ed38458bcf4722f365f Binary files /dev/null and b/web/details_close.png differ diff --git a/web/details_open.png b/web/details_open.png new file mode 100644 index 0000000000000000000000000000000000000000..c0edf448024855e729af18548111abc2b0cec161 Binary files /dev/null and b/web/details_open.png differ diff --git a/web/index.php b/web/index.php new file mode 100644 index 0000000000000000000000000000000000000000..b1de390cc920a1e525cf3ecfe17092ad43b3ed13 --- /dev/null +++ b/web/index.php @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> + <head> + + <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script> + <script type="text/javascript" src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script> + <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css"/> + + <script type="text/javascript" src="script.js"></script> + <link href="style.css" rel="stylesheet" type="text/css" /> + + <meta charset=utf-8 /> + <title>eduGAIN Connectivity Check Service 2</title> + </head> + <body> + <div class="container"> + <table id="example" class="display" style="width:100%"> + <thead> + <tr> + <th></th> + <th>DisplayName</th> + <th>EntityID</th> + <th>Registration Authority</th> + <th>Technical Contacts</th> + <th>Support Contacts</th> + <th>Date</th> + <th>Status</th> + </tr> + </thead> + </table> + </div> + </body> +</html> diff --git a/web/script.js b/web/script.js new file mode 100644 index 0000000000000000000000000000000000000000..ba653f25b3aee1291e3e60b9eed5bdffb58b3170 --- /dev/null +++ b/web/script.js @@ -0,0 +1,88 @@ +/* Formatting function for row details - modify as you need */ +function format ( d ) { + // `d` is the original data object for the row + return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+ + '<tr>'+ + '<td>IdP DisplayName:</td>'+ + '<td>'+d.displayName+'</td>'+ + '<td></td>'+ + '</tr>'+ + '<tr>'+ + '<td>Technical Contacts:</td>'+ + '<td>'+d.contacts.technical+'</td>'+ + '<td></td>'+ + '</tr>'+ + '<tr>'+ + '<td>SP1:</td>'+ + '<td>'+d.sp1.entityID+'</td>'+ + '<td>'+d.sp1.status+'</td>'+ + '</tr>'+ + '<tr>'+ + '<td>SP2:</td>'+ + '<td>'+d.sp2.entityID+'</td>'+ + '<td>'+d.sp2.status+'</td>'+ + '</tr>'+ + '</table>'; +} + +$(document).ready(function() { + var table = $('#example').DataTable( { + "ajax": { + "url": "data.json", + "dataSrc": "" + }, + "columns": [ + { + "className": 'details-control', + "orderable": false, + "data": null, + "defaultContent": '' + }, + { + "data": "displayName", + "defaultContent": '' + }, + { "data": "entityID" }, + { "data": "registrationAuthority" }, + { + "data": "contacts.technical", + "defaultContent": '' + }, + { + "data": "contacts.support", + "defaultContent": '' + }, + { "data": "date" }, + { "data": "status" } + ], + "rowCallback": function( row, data, index ) { + if (data.status == "ERROR") { + $('td', row).css('background-color', 'Red'); + } + if (data.status == "DISABLE") { + $('td', row).css('background-color', 'Grey'); + } + if (data.status == "OK") { + $('td', row).css('background-color', 'Green'); + } + }, + "order": [[1, 'asc']] + } ); + + // Add event listener for opening and closing details + $('#example tbody').on('click', 'td.details-control', function () { + var tr = $(this).closest('tr'); + var row = table.row( tr ); + + if ( row.child.isShown() ) { + // This row is already open - close it + row.child.hide(); + tr.removeClass('shown'); + } + else { + // Open this row + row.child( format(row.data()) ).show(); + tr.addClass('shown'); + } + } ); +} ); diff --git a/web/style.css b/web/style.css new file mode 100644 index 0000000000000000000000000000000000000000..1b5faa42e14bbb02047af5d5adc804e13ecf77c2 --- /dev/null +++ b/web/style.css @@ -0,0 +1,8 @@ +td.details-control { + background: url('./details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('./details_close.png') no-repeat center center; +}