CAS is de Centrale Authenticatie Service van Universiteit Gent. Via CAS kan u zich op verschillende UGent-webpagina's aanmelden met uw account.
Indien u zelf webtoepassingen ontwikkelt waarbij u gebruikers dient te authentificeren, kunt u in deze toepassingen gebruik maken van CAS. CAS biedt naast Single Sign-On ook Single Sign-Out en kan ook meer dan enkel de loginnaam teruggeven aan uw webtoepassingen.
Uw webtoepassing brengt de gebruiker naar de CAS login pagina.
Na authenticatie redirect CAS de gebruiker naar de oorspronkelijke webtoepassing, die via de url als service parameter werd meegegeven. Indien de gebruiker ingelogd is in een andere webtoepassing, krijgt de gebruiker geen login pagina meer te zien. (= Single Sign-On)
Voor Single Sign-Out stuurt CAS een POST request naar alle toepassingen waar de gebruiker ingelogd is.
CAS kan uitgetest worden aan de hand van onderstaande instructies. Wenst u CAS te gebruiken voor lokaal development kunt u https://localhost:8080/** gebruiken. Hiervoor is geen aanvraag nodig.
Registratie is vereist. U vult het volgende in:
Er wordt enkel een CAS service registratie overwogen voor url's die wijzen
naar een bestaand ugent dns record.
Onbestaande dns gegevens of die nog in aanvraag zijn worden geweigerd.
Het dns record én de server moet onder controle zijn van UGent (geen externe opstellingen)
Via een 301 redirect kunnen externe opstellingen wel doorverwezen worden naar een interne opstelling mét CAS.
Gelieve er eerst voor te zorgen dat uw site over https aangeboden wordt.
Voor webshares gaat dit automatisch. Voor eigen webservers
zie: https://helpdesk.ugent.be/webhosting/csr.php
CAS gebruikt de url van uw webtoepassing om de service
parameter te vergelijken met geregistreerde webtoepassingen.
Als in meerdere pagina's van een webtoepassing een CAS redirect voorkomt,
kunt u de hoofd url doorgeven gevolgd door 2 *-en (= wildcards).
Let hierbij op voor toepassingen die onder eenzelfde domein draaien.
https://foo.ugent.be/bar/**
Standaard wordt de loginnaam (uid) teruggeven. Op aanvraag zijn ook volgende LDAP attributen mogelijk:
U kunt op deze manier LDAP attributen opvragen zonder in uw toepassing de UGent LDAP aan te spreken. Naargelang de noden van de toepassingen kan de lijst aangepast worden.
Gebruik CAS enkel voor authenticatie en niet voor session management. Session management dient u te voorzien in uw webtoepassing. Zorg ervoor dat er na een succesvolle authenticatie bijgehouden wordt dat de gebruiker geauthenticeerd is.
Op de webshares server is CAS op server niveau geïnstalleerd.
Via een wijziging in de .htaccess van uw site kunt u authenticatie afdwingen:
Authtype Cas Require valid-userHiermee vraagt u de bezoeker in te loggen met een geldig UGent-account (dit is het cas attribuut uid).
Require user usernamewaarbij username de UGent loginnaam is kunt u ook op naam toegang verlenen.
Require cas-attribute surname:Petersgeeft enkel toegang tot de site voor de gebruikers met de familienaam Peters.
Meer info staat op https://github.com/apereo/mod_auth_cas
Opmerking: Indien u problemen ondervindt bij het updaten van uw systeem is het aangewezen een update van de CAS client te doen.
Vereisten
PHP 7.3
Algemeen voorbeeld
Voor php-applicaties kan bibliotheek phpCAS gebruikt worden: https://github.com/apereo/phpCAS : Download de meest recente versie
Onderstaand voorbeeld toont hoe de bibliotheek kan gebruikt worden.
Gelieve de locatie van het certificaat aan te passen naar de plaats waar het certificaat is opgeslagen! Wanneer het pad naar het certificaat verkeerd geconfigureerd is, leidt dit tot een oneindige redirect lus.
<?php include_once('CAS.php'); //phpCAS::setDebug('/srv/vhost/mijnsite.ugent.be/htdocs/tmp/phpCAS.log'); // Schrijft debug informatie naar een log-file // Parameters: CAS versie, url CAS server, poort CAS server, CAS server URI (idem als host), // boolean die aangeeft of sessie moet gestart worden phpCAS::client(CAS_VERSION_2_0,'login.ugent.be',443,'', true); // Geeft aan vanaf welke server logout requests mogelijk zijn phpCAS::handleLogoutRequests(true, array('login.ugent.be')); // Locatie van het "trusted certificate authorities" bestand: phpCAS::setCasServerCACert('/etc/ssl/certs/ca-certificates.crt'); // Geen server verificatie (minder veilig!): //phpCAS::setNoCasServerValidation(); // Hier gebeurt de authenticatie van de gebruiker phpCAS::forceAuthentication(); // Opvangen van logout requests if (isset($_REQUEST['logout'])) { phpCAS::logout(); } ?> <html> <head> <title>phpCAS simple client</title> </head> <body> <h1>Successfull Authentication!</h1> <p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p> <p>the attributes are: <?php echo '<ul>'; $attr = phpCAS::getAttributes(); foreach ($attr as $key => $value) { if(!is_array($value)) { echo '<li>' . $key . ' => ' . $value . '</li>'; } else { echo '<li>' . $key . '</li>'; echo '<ul>'; foreach($value as $v) { echo '<li>' . $v . '</li>'; } echo '</ul>'; } } echo '</ul>'; ?> </p> <p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p> <p><a href="?logout=">Logout</a></p> </body> </html>
Dit voorbeeld is specifiek ontworpen voor sites op UGent webshares, maar kan ook op andere plaatsen gebruikt worden.
UGCAS_Simple is een CAS client module die de gebruikersnaam van de persoon teruggeeft na een succesvolle login. Extra attributen of uitloggen worden niet ondersteund. UGCAS_Simple is te downloaden op UGCAS_Simple-0.3.zip en bevat:
Gebruik de Java Apereo CAS Client.
Met casServerUrlPrefix:
https://login.ugent.beserverName:
https://JeCasService.ugent.be:443
Spring security
CAS authenticatie kan worden geïntegreerd in een Spring based toepassing d.m.v. Spring Security.
Spring Security biedt out-of-the-box ondersteuning voor CAS 3. Zie http://static.springsource.org/spring-security/site/docs/3.0.x/reference/cas.html voor de uitstekende online documentatie van Spring Security zelf. Ingeval u problemen ondervindt, gelieve ook ook de FAQ te bekijken op http://static.springsource.org/spring-security/site/faq.html#faq-start-simple
Een voorbeeld toepassing kan gedownload worden van CasSpringsecurityExample.zip. Ontwikkelaars dienen zeker de UserDetailService bean te herconfigureren naar de gewenste omgeving.
Maven
De Java CAS client kan ook eenvoudig geïntegreerd worden in een Maven-based build systeem:
<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-client-core</artifactId> <version>3.6.4</version> </dependency> <dependency> <groupId>org.apereo.cas.client</groupId> <artifactId>cas-client-support-saml</artifactId> <version>${java.cas.client.version}</version> </dependency>
SSL
Service tickets worden gevalideerd via een SSL connectie met de CAS server. Het is dus noodzakelijk dat het certificaat van de CAS server ingeladen wordt in de JVM waarop de Java toepassing zal draaien.
sudo $JAVA_HOME/bin/keytool -import -alias login.ugent.be -file CERTIFICATE_FILE -keystore $JAVA_HOME/jre/lib/security/cacerts
Gebruik de Apereo .NET CAS Client.
Met casServerLoginUrl:
https://login.ugent.be/logincasServerUrlPrefix:
https://login.ugent.beserverName:
https://JeCasService.ugent.be:443ticketValidatorName:
Cas20