# EduGAIN Connectivity Check Service - ECCS 1. [Introduction](#introduction) 2. [Check Performed on the IdPs](#check-performed-on-the-idps) 3. [Limitations](#limitations) 4. [Disable Checks](#disable-checks) 5. [On-line interface](#on-line-interface) 6. [Requirements Hardware](#requirements-hardware) 7. [Requirements Software](#requirements-software) 8. [HOWTO Install and Configure](#howto-install-and-configure) * [Python 3](#python-3) + [CentOS 7 requirements](#centos-7-requirements) + [Debian requirements](#debian-requirements) + [Install](#install) * [Install the Chromedriver](#install-the-chromedriver) * [Install Google Chrome needed by Selenium](#install-google-chrome-needed-by-selenium) * [ECCS Script](#eccs-script) + [Install](#install-1) + [Configure](#configure) + [Execute](#execute) 9. [ECCS API Server (UWSGI)](#eccs-api-server-uwsgi) * [Install](#install-1) * [Configure](#configure-1) * [Utility](#utility) 10. [ECCS API JSON](#eccs-api-json) 11. [User Interface](#user-interface) * [User interface parameters](#user-interface-parameters) 12. [Utility for web interface](#utility-for-web-interface) 13. [Utility for developers](#utility-for-developers) * [ECCS API Development Server](#eccs-api-development-server) 14. [Authors](#authors) ## Introduction The purpose of the eduGAIN Connectivity Check is to identify eduGAIN Identity Providers (IdP) that are not properly configured. In particular it checks if an IdP properly loads and consumes SAML2 metadata which contains the eduGAIN Service Providers (SP). The check results are published on the public eduGAIN Connectivity Check web page ([https://technical.edugain.org/eccs](https://technical.edugain.org/eccs)). The main purpose is to increase the service overall quality and user experience of the eduGAIN interfederation service by making Federation and Identity Provider operators aware of configuration problems. The check is performed by sending a SAML authentication request to each eduGAIN IdP and then follow the various HTTP redirects until the user login form. The expected result is a login form that allows users to authenticate themselves (typically with username/password) or an error message of some form. For those Identity Providers that return an error message, it can be assumed that they don't consume eduGAIN metadata properly or that they suffer from another configuration problem. There are some cases where the check will generate false positives, therefore IdPs can be excluded from checks as is described below. The Identity Providers are checked once per day. Therefore, the login requests should not have any significant effect on the log entries/statistics of an Identity Provider. Also, no actual login is performed because the check cannot authenticate users due to missing username and password for the IdPs. Only Identity Providers are checked but not the Service Providers. ## Check Performed on the IdPs The check follows the steps: 1. It retrieves the eduGAIN IdPs from eduGAIN Operator Team database via a JSON interface 2. For each IdP, that hasn't been disabled manually by the eduGAIN Operations Team or dynamically by `robots.txt` (explained below) and that has a valid SSL certificate on its HTTP-Redirect Location, it performs an IdP-initiated SSO with SAML Authentication Request for two SP belonging two different NREN, members of eduGAIN interfederation, and for another randomnly generated fake SP. It expects to find the HTML form with username and password fields for the NREN SPs and an error or other result for the fake one. If an IdP uses frames on the Login page, the check follows only the first one on each nested pages. If an IdP uses HTTP Basic Authentication, the check searches '401 Unauthorized' string into the web page content returned or 401 HTTP Status Code from the request. Therefore, no complete login will happen at the Identity Provider because the check stops at the login page. The SAML Authentication Request is not signed. Therefore, an authentication request for any eduGAIN SP could be created because the SP's private key is not needed. The SPs HTTP-Post Assertion Consumer Service URLs used by the check are retrieved by `sps-metadata.xml` frile from the "input" directory. The 'validation' method used to validate the "sps-metadata.xml" is a deployer decision, but a solution is provided on the `README-SPS-METADATA.md` file. 3. If the check fails for an IdP the first time, a second attempt will be done at the end of all other checked IdP, before exit. 4. The results are kept for the last 7 days, but the deployers can increase it as they wish. ## Limitations There are some situations where the check cannot work reliably. In those cases it is possible to disable the check for a particular IdP. The so far known cases where the check might generate a false negative are: * IdP does not support HTTPS with at least SSLv3 or TLS1 or newer (these IdPs are insecure anyway) * IdP is part of a Hub & Spoke federation (some of them manually have to first approve eduGAIN SPs) * IdP does not use web-based login form (e.g. Account Chooser Authentication or X.509 login) * IdP does not allow requests coming from the ECCS servers: technical-test.edugain.org / technical.edugain.org * IdP that uses more than one nested `