CAS Authentication Server

Aus Hostsharing Wiki
Version vom 29. Juni 2019, 13:19 Uhr von Hsh-peterhormanns (Diskussion | Beiträge) (Einrichtung des Tomcat fertig)
Zur Navigation springen Zur Suche springen

CAS Authentication Server

Der CAS Server ("Central Authentication Service" oder "CAS Authentication Server") ist eine SSO- ("Single Sign On") Lösung.

CAS ist für große, verteilte Deploments von Web-Anwendungen geeignet. Er stammt aus dem Universitätsumfeld in den USA. Er wurde bei der Yale Universität entwickelt und wird aktuell bei JA-SIG / Apero als freie Software unter der Apache Lizenz gepflegt. [1], [2]

Die Hostsharing eG nutzt CAS seit Jahren als Login-Lösung insbesondere für die Administrationswerkzeuge von Hsadmin.

Dieser Beitrag erläutert die Installation von CAS in einem Hostsharing Webspace und die Konfiguration von Beispielanwendungen zum Login mit CAS.

Erste Installation

Die aktuelle stabile Version des CAS Server ist 6.0.4 Diese Version erfordert Java 11. Die empfohlene Installation eines Standalone-CAS erfolgt über das WAR Overlay Projekt [3]. Eine ausführliche Deployment-Anleitung (leider noch für Version 5.x) findet sich bei The New School [4].

Service-User und Domain

Zunächst werden mit HSAdmin ein User und eine Domain eingerichtet. Darauf achten, dass der User eine gültige Login-Shell erhält, hier die Bash (/bin/bash).

 xyz00@h50:~$ hsscript -i
 xyz00@hsadmin> user.add({set:{name:'xyz00-login',shell:'/bin/bash',password:'***'}})
 xyz00@hsadmin> domain.add({set:{user:'xyz00-login',name:'login.hs-example.de'}})
 xyz00@hsadmin> bye

Einrichtung des Tomcat

Für den Apache Tomcat Webserver ist die Option "Eigener Daemon" notwendig. Bei der Anmeldung (bei service(at)hostsharing.net bitte den Service User xyz00-login und die gewüschte Anzahl IP-Ports angeben). Hier verwenden wir die Ports 31530, 31531 und 31532.

Weiter geht es als User xyz00-login

Einrichten eines Apache Tomcat 9 im Userspace:

 xyz00-login@h50:~$ tomcat9-instance-create tomcat9
 You are about to create a Tomcat instance in directory 'tomcat9'
 Warning: HTTP port 8080 appears to be in use.
 Type <ENTER> to continue, <CTRL-C> to abort.

Mit <Enter> bestätigen, dann wird eine Tomcat-Konfiguration im neuen Verzeichnis $HOME/tomcat9 angelegt.

Die server.xml im Verzeichnis $HOME/tomcat9/conf wird angepasst:

 <?xml version="1.0" encoding="UTF-8"?>
 <Server port="31530" shutdown="SHUTDOWN">
 
   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 
   <GlobalNamingResources>
     <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase"
             description="User database that can be updated and saved"
             factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
             pathname="conf/tomcat-users.xml" />
     </GlobalNamingResources>
 
   <Service name="Catalina">
     <Connector address="localhost" port="31531" protocol="AJP/1.3" redirectPort="443" />
     <Engine name="Catalina" defaultHost="localhost">
       <Realm className="org.apache.catalina.realm.LockOutRealm">
       <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
       </Realm>
       <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
       </Host>
     </Engine>
   </Service>
 
 </Server>

Insbesondere die beiden Angaben port="31530" und port="31531" müssen angepasst werden!

In der Datei setenv.sh im Verzeichnis $HOME/tomcat9/bin ergänzenen wir den Pfad zur Java 11 Installation als Variable $JAVA_HOME (für 32-Bit bzw. für 64-Bit Systeme):

 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-i386
 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

Ich kopiere zum Testen gern noch das Startskript catalina.sh in die Installation des Tomcat:

 xyz00-login@h50:~$ cp /usr/share/tomcat9/bin/catalina.sh $HOME/tomcat9/bin/
 xyz00-login@h50:~$ cd tomcat9/
 xyz00-login@h50:~/tomcat9$ ./bin/catalina.sh run
 Using CATALINA_BASE:   /home/pacs/xyz00/users/login/tomcat9
 Using CATALINA_HOME:   /usr/share/tomcat9
 Using CATALINA_TMPDIR: /home/pacs/xyz00/users/login/tomcat9/temp
 Using JRE_HOME:        /usr/lib/jvm/default-java
 Using CLASSPATH:       /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar
 <6>Server version name:   Apache Tomcat/9.0.16 (Debian)
 [...]
 <6>Server startup in [75] milliseconds

Tomcat läuft, abbrechen mit <Ctrl-C>

Links

[1] https://de.wikipedia.org/wiki/Central_Authentication_Service

[2] https://www.apereo.org/projects/cas

[3] https://github.com/apereo/cas-overlay-template

[4] https://dacurry-tns.github.io/deploying-apereo-cas/