<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CAS‑Tutorial &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/de/category/c-de/cas-tutorial-de/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>Unabhängiges Software-Entwicklungsstudio</description>
	<lastBuildDate>Thu, 06 Aug 2026 08:09:55 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.foxdevelop.com/wp-content/uploads/2026/05/fox-svgrepo-com-1.png</url>
	<title>CAS‑Tutorial &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Umsetzung von CAS</title>
		<link>https://www.foxdevelop.com/de/2026/08/06/umsetzung-von-cas/</link>
					<comments>https://www.foxdevelop.com/de/2026/08/06/umsetzung-von-cas/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 08:09:55 +0000</pubDate>
				<category><![CDATA[CAS‑Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7829</guid>

					<description><![CDATA[Implementierungsansatz der älteren CAS‑Version Kernprinzip (CAS‑1.0‑Protokoll) web.config‑Konfiguration Neuere CAS‑Server erzwingen standardmäßig HTTPS, casUrl muss mit https://127.0.0.1:8443/cas/ befüllt werden Quellcode der Seite CasEnter.aspx 1. CasEnter.aspx Frontend‑Markup 2. CasEnter.aspx.cs Code‑Behind‑Logik Schnittstelle auf ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Implementierungsansatz der älteren CAS‑Version</p>



<h4 class="wp-block-heading">Kernprinzip (CAS‑1.0‑Protokoll)</h4>



<ol class="wp-block-list">
<li>Benutzer ruft die geschützte Seite <code>/admin/admin.aspx</code> auf</li>



<li>Die Berechtigungsregeln in <code>web.config</code> blockieren anonyme Benutzer und leiten automatisch zur Anmeldeseite <code>CasEnter.aspx</code> weiter</li>



<li><code>CasEnter.aspx</code> prüft, ob der URL‑Parameter <code>ticket</code> vorhanden ist</li>
</ol>



<ul class="wp-block-list">
<li>Kein Ticket vorhanden: Weiterleitung zur Anmeldeseite des CAS‑Servers, die aktuelle Site‑Adresse wird als <code>service</code> übergeben</li>



<li>Ticket übergeben: Aufruf der Schnittstelle <code>serviceValidate</code> zur Ticketprüfung am CAS‑Server</li>
</ul>



<ol class="wp-block-list">
<li>CAS liefert XML‑Daten zurück, daraus wird der angemeldete Benutzername extrahiert</li>



<li>Nach erfolgreicher Prüfung wird <code>FormsAuthentication.SetAuthCookie()</code> aufgerufen, um das lokale Forms‑Anmeldeticket zu schreiben, anschließend erfolgt die Weiterleitung zur Zielseite</li>



<li>Bei späteren Zugriffen auf geschützte Verzeichnisse erkennt ASP.NET Forms den Anmeldezustand</li>
</ol>



<h4 class="wp-block-heading">web.config‑Konfiguration</h4>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">system.web</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">authentication</span> <span class="hljs-attr">mode</span>=<span class="hljs-string">"Forms"</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- loginUrl verweist auf CasEnter.aspx als CAS‑Eingangs‑Relaisseite --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">forms</span> <span class="hljs-attr">loginUrl</span>=<span class="hljs-string">"CasEnter.aspx"</span> 
           <span class="hljs-attr">defaultUrl</span>=<span class="hljs-string">"admin/admin.aspx"</span> 
           <span class="hljs-attr">name</span>=<span class="hljs-string">".LoginFormsTicket"</span> 
           <span class="hljs-attr">path</span>=<span class="hljs-string">"/"</span> 
           <span class="hljs-attr">timeout</span>=<span class="hljs-string">"40"</span> 
           <span class="hljs-attr">protection</span>=<span class="hljs-string">"All"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">forms</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">authentication</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">authorization</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">allow</span> <span class="hljs-attr">users</span>=<span class="hljs-string">"*"</span>/&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">authorization</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">system.web</span>&gt;</span>

<span class="hljs-comment">&lt;!-- Anonymen Zugriff auf das admin‑Verzeichnis unterbinden --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">location</span> <span class="hljs-attr">path</span>=<span class="hljs-string">"admin"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">system.web</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">authorization</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">deny</span> <span class="hljs-attr">users</span>=<span class="hljs-string">"?"</span>/&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">authorization</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">system.web</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">location</span>&gt;</span></code></span></pre>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Neuere CAS‑Server erzwingen standardmäßig HTTPS, <code>casUrl</code> muss mit <code>https://127.0.0.1:8443/cas/</code> befüllt werden</p>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">appSettings</span>&gt;</span>
  <span class="hljs-comment">&lt;!-- Adresse für die neue CAS7‑Version mit abschließendem Schrägstrich --&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">add</span> <span class="hljs-attr">key</span>=<span class="hljs-string">"casUrl"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"https://127.0.0.1:8443/cas/"</span>/&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">appSettings</span>&gt;</span></code></span></pre>


<h4 class="wp-block-heading">Quellcode der Seite CasEnter.aspx</h4>



<h5 class="wp-block-heading">1. CasEnter.aspx Frontend‑Markup</h5>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">%@</span> <span class="hljs-attr">Page</span> <span class="hljs-attr">Language</span>=<span class="hljs-string">"C#"</span> <span class="hljs-attr">AutoEventWireup</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">CodeBehind</span>=<span class="hljs-string">"CasEnter.aspx.cs"</span> <span class="hljs-attr">Inherits</span>=<span class="hljs-string">"CasStudy.Web.CasEnter"</span> %&gt;</span>
<span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/1999/xhtml"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>CAS‑Relais‑Anmeldung<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"form1"</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">asp:Label</span> <span class="hljs-attr">ID</span>=<span class="hljs-string">"Label1"</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">asp:Label</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span> /&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">asp:HyperLink</span> <span class="hljs-attr">ID</span>=<span class="hljs-string">"HyperLink1"</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span>Erneute Authentifizierung<span class="hljs-tag">&lt;/<span class="hljs-name">asp:HyperLink</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span></code></span></pre>


<h5 class="wp-block-heading">2. CasEnter.aspx.cs Code‑Behind‑Logik</h5>



<p class="wp-block-paragraph"><br>Schnittstelle auf CAS3.0 <code>p3/serviceValidate</code> aktualisiert<br>HttpClient hinzugefügt, um das veraltete WebClient zu ersetzen </p>



<p class="wp-block-paragraph">Kompatibilität für selbstsignierte Zertifikate ergänzt (erforderlich für lokale Tests mit neueren CAS‑Versionen)<br>Namensraum‑Verarbeitung für das von CAS zurückgelieferte XML</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">using System;
using System.Configuration;
using System.Net;
using System.Net.Http;
using System.Xml;
using System.Web.Security;

public partial class CasEnter : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string casHost = ConfigurationManager.AppSettings&#91;"casUrl"];
        string ticket = Request.QueryString&#91;"ticket"];
        string service = Request.Url.GetLeftPart(UriPartial.Path);

        // Kein Ticket vorhanden, Weiterleitung zur CAS‑Anmeldeseite
        if (string.IsNullOrEmpty(ticket))
        {
            string redirectUrl = $"{casHost}login?service={Uri.EscapeDataString(service)}";
            Response.Redirect(redirectUrl);
            return;
        }

        // Ticket prüfen
        string username = ValidateTicket(casHost, ticket, service);
        if (string.IsNullOrEmpty(username))
        {
            Label1.Text = "Entschuldigung! Die CAS‑Authentifizierung ist fehlgeschlagen, bitte versuchen Sie es erneut!";
            HyperLink1.NavigateUrl = Request.Url.AbsolutePath;
        }
        else
        {
            // Forms‑Authentifizierungsticket schreiben, lokale Anmeldung abschließen
            FormsAuthentication.SetAuthCookie(username, false);
            // Zur Zielseite weiterleiten
            Response.Redirect(FormsAuthentication.DefaultUrl);
        }
    }

    /// <span class="hljs-tag">&lt;<span class="hljs-name">summary</span>&gt;</span>
    /// Ticketprüfung über CAS3.0 p3/serviceValidate
    /// <span class="hljs-tag">&lt;/<span class="hljs-name">summary</span>&gt;</span>
    private string ValidateTicket(string casHost, string ticket, string service)
    {
        // Neuere CAS‑Versionen empfehlen p3/serviceValidate (CAS3.0‑Protokoll)
        string validateUrl = $"{casHost}p3/serviceValidate?ticket={Uri.EscapeDataString(ticket)}&amp;service={Uri.EscapeDataString(service)}";

        // Lokaler Test: Nicht vertrauenswürdige SSL‑Zertifikate zulassen (im Produktivbetrieb entfernen!)
        ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, err) =&gt; true;

        using var httpClient = new HttpClient();
        string xml = httpClient.GetStringAsync(validateUrl).Result;

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xml);
        XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);
        // Namensraum des von CAS3 zurückgegebenen XML
        nsMgr.AddNamespace("cas", "http://www.yale.edu/tp/cas");

        // Benutzer‑Knoten suchen
        XmlNode userNode = doc.SelectSingleNode("//cas:authenticationSuccess/cas:user", nsMgr);
        return userNode?.InnerText;
    }
}</code></span></pre>


<p class="wp-block-paragraph">Umsetzung von CAS</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/de/2026/08/06/umsetzung-von-cas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installation</title>
		<link>https://www.foxdevelop.com/de/2026/08/06/installation-3/</link>
					<comments>https://www.foxdevelop.com/de/2026/08/06/installation-3/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:55:23 +0000</pubDate>
				<category><![CDATA[CAS‑Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7813</guid>

					<description><![CDATA[Installation älterer Version – Hinweise für CAS vor 5.0 Abhängigkeiten 1. JDK Version: (JDK) Java 17Direktlink: Java Downloads &#124; Oracle ⚠️ Hinweis: JDK7 ist eine veraltete Version und läuft nur ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Installation älterer Version – Hinweise für CAS vor 5.0</h3>



<ol class="wp-block-list">
<li>Der CAS‑Server ist in Java entwickelt, für den Betrieb werden zwei zentrale Umgebungen benötigt:</li>
</ol>



<ul class="wp-block-list">
<li><strong>JDK (Java‑Entwicklungskit)</strong>: Enthält die Java‑Virtual‑Machine (JVM), wird zur Ausführung von Java‑Programmen benötigt und bildet die Betriebsgrundlage.</li>



<li><strong>Tomcat (Web‑Container)</strong>: Dient zum Bereitstellen und Ausführen der CAS‑WAR‑Webanwendung.</li>
</ul>



<ol class="wp-block-list">
<li>Vorgeschriebene Installationsreihenfolge: <strong>zuerst JDK installieren → dann Tomcat</strong> (Tomcat sucht bei der Installation automatisch die lokale JDK‑Umgebung)</li>
</ol>



<h4 class="wp-block-heading">Abhängigkeiten</h4>



<h5 class="wp-block-heading">1. JDK</h5>



<p class="wp-block-paragraph">Version: (JDK) Java 17<br>Direktlink: <code><a href="https://www.oracle.com/cn/java/technologies/downloads/">Java Downloads | Oracle </a></code></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hinweis: JDK7 ist eine veraltete Version und läuft nur mit älteren CAS‑Versionen; für neue Projekte nicht empfohlen.</p>
</blockquote>



<h5 class="wp-block-heading">2. Apache Tomcat</h5>



<p class="wp-block-paragraph">Version: <strong>Tomcat (Windows‑Installationsversion)</strong><br><a href="https://tomcat.apache.org/">Apache Tomcat® &#8211; Welcome!</a></p>



<h4 class="wp-block-heading">Installationsablauf</h4>



<ol class="wp-block-list">
<li><strong>JDK installieren</strong>
<ul class="wp-block-list">
<li>Führen Sie die EXE‑Installationsdatei aus, der Installationspfad kann individuell festgelegt werden</li>



<li>【Wichtig】Nach Abschluss der Installation empfehlen sich Umgebungsvariablen zu konfigurieren: <code>JAVA_HOME</code>, <code>Path</code>, damit Tomcat die Java‑Umgebung erkennt</li>
</ul>
</li>



<li><strong>Tomcat7 installieren</strong>
<ul class="wp-block-list">
<li>Installationsprogramm ausführen, es scannt automatisch das bereits installierte JDK</li>



<li>Tomcat‑Port anpassen (Standard 8080), Administrator‑Benutzername und Passwort festlegen</li>



<li>Optionen auf der Abschlussseite der Installation:</li>



<li> <code>Run Apache Tomcat</code>: Haken setzen, um den Tomcat‑Dienst nach Klick auf Finish automatisch zu starten</li>



<li><code>Show Readme</code>: Haken entfernen, die Dokumentation wird nicht benötigt</li>



<li>Klicken Sie auf <code>Finish</code> um die Installation abzuschließen</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">SSL/HTTPS‑Konfiguration für Tomcat</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Hintergrund: <strong>Das CAS‑Protokoll schreibt zwingend HTTPS für den Server vor</strong>, HTTP ist unzulässig, deswegen muss für Tomcat ein SSL‑Zertifikat eingerichtet werden.</p>
</blockquote>



<ol class="wp-block-list">
<li>Erstellen Sie mit dem im JDK enthaltenen Tool <code>keytool</code> einen <strong>JKS‑Keystore (selbstsigniertes Zertifikat)</strong></li>



<li>Passen Sie die Datei <code>conf/server.xml</code> von Tomcat an und aktivieren Sie den SSL‑Connector</li>



<li>Tomcat neu starten, unter <code>https://localhost:8443</code> die HTTPS‑Funktion prüfen</li>
</ol>



<h4 class="wp-block-heading">Selbstsigniertes Zertifikat (JKS) erstellen</h4>



<h5 class="wp-block-heading">Vorbereitungen</h5>



<ol class="wp-block-list">
<li>Ordner für Zertifikate anlegen: Beispiel <code>C:\Keys</code></li>



<li><strong>Eingabeaufforderung (cmd) als Administrator ausführen</strong><br>&gt; Bei Windows7/10/11 treten Berechtigungsfehler auf, wenn eine normale cmd‑Instanz in das Stammverzeichnis von Laufwerk C schreibt.</li>



<li>Wechseln Sie in den bin‑Ordner von JDK/JRE</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-javascript">cd <span class="hljs-string">"c:\Program Files\Java\jre\bin"</span></code></span></pre>


<p class="wp-block-paragraph">Allgemeiner Befehlsvorlage (funktioniert auch mit neueren JDK‑Versionen)</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">keytool</span> <span class="hljs-selector-tag">-genkey</span> <span class="hljs-selector-tag">-alias</span> <span class="hljs-selector-tag">tomcat</span> <span class="hljs-selector-tag">-keyalg</span> <span class="hljs-selector-tag">RSA</span> <span class="hljs-selector-tag">-storepass</span> <span class="hljs-selector-tag">changeit</span> <span class="hljs-selector-tag">-keystore</span> <span class="hljs-selector-tag">c</span>:\<span class="hljs-selector-tag">Keys</span>\<span class="hljs-selector-class">.keystore</span> <span class="hljs-selector-tag">-validity</span> 36000</code></span></pre>


<h4 class="wp-block-heading">Parametererklärung</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Parameter</th><th>Bedeutung</th></tr></thead><tbody><tr><td><code>-genkey</code></td><td>Schlüsselpaar generieren</td></tr><tr><td><code>-alias tomcat</code></td><td>Zertifikatsalias, frei wählbar</td></tr><tr><td><code>-keyalg RSA</code></td><td>Verschlüsselungsalgorithmus, Standard‑RSA</td></tr><tr><td><code>-storepass changeit</code></td><td><strong>Keystore‑Passwort</strong> (unbedingt merken, wird später bei der Tomcat‑Konfiguration benötigt)</td></tr><tr><td><code>-keystore c:\Keys\.keystore</code></td><td>Ausgabepfad der Zertifikatsdatei</td></tr><tr><td><code>-validity 36000</code></td><td>Gültigkeitsdauer des Zertifikats (Tage)</td></tr></tbody></table></figure>



<h5 class="wp-block-heading">Interaktive Eingabe der Daten</h5>



<p class="wp-block-paragraph">Geben Sie nach Ausführung des Befehls nacheinander ein:</p>



<ol class="wp-block-list">
<li>Vor‑ und Nachname: Domain eintragen (für Lernumgebungen beliebiger Inhalt möglich)</li>



<li>Organisationseinheit, Organisation, Stadt, Bundesstaat, Ländercode (cn)</li>



<li>Zur Bestätigung der Angaben <code>y</code> eingeben</li>



<li>Schlüsselpasswort: <strong>Einfach die Eingabetaste drücken, verwenden Sie dasselbe Passwort wie beim Keystore</strong></li>
</ol>



<h5 class="wp-block-heading">Befehl zum Anzeigen des Zertifikats</h5>


<pre class="wp-block-code"><span><code class="hljs language-php">keytool -<span class="hljs-keyword">list</span> -keystore <span class="hljs-string">"C:\Keys\.keystore"</span></code></span></pre>


<p class="wp-block-paragraph">Geben Sie das Passwort ein; eine fehlerfreie Ausgabe bestätigt die erfolgreiche Zertifikaterstellung.</p>



<h4 class="wp-block-heading">SSL‑Connector in Tomcat server.xml konfigurieren</h4>



<ol class="wp-block-list">
<li>Öffnen Sie <code>Tomcat/conf/server.xml</code></li>



<li>Suchen Sie den auskommentierten SSL‑Connector, heben Sie die Auskommentierung auf und passen Sie Zertifikatspfad sowie Passwort an</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">Connector</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"8443"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"HTTP/1.1"</span> <span class="hljs-attr">SSLEnabled</span>=<span class="hljs-string">"true"</span>
    <span class="hljs-attr">maxThreads</span>=<span class="hljs-string">"150"</span> <span class="hljs-attr">scheme</span>=<span class="hljs-string">"https"</span> <span class="hljs-attr">secure</span>=<span class="hljs-string">"true"</span>
    <span class="hljs-attr">clientAuth</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">sslProtocol</span>=<span class="hljs-string">"TLS"</span>
    <span class="hljs-attr">keystoreFile</span>=<span class="hljs-string">"C:\Keys\.keystore"</span>
    <span class="hljs-attr">keystorePass</span>=<span class="hljs-string">"changeit"</span> /&gt;</span></code></span></pre>


<h5 class="wp-block-heading">Parameterbeschreibung</h5>



<ul class="wp-block-list">
<li><code>port="8443"</code>: Standard‑HTTPS‑Port von Tomcat (Standard‑HTTPS‑Port ist 443, bei Wechsel auf 443 auf Portbelegung und Berechtigungen achten)</li>



<li><code>keystoreFile</code>: Absoluter Pfad zur erstellten Zertifikatsdatei</li>



<li><code>keystorePass</code>: Das zuvor mit keytool festgelegte Keystore‑Passwort</li>



<li><code>clientAuth="false"</code>: Kein Client‑Zertifikat erforderlich (für Lernumgebungen fest auf false setzen)</li>
</ul>



<h4 class="wp-block-heading">Prüfverfahren</h4>



<p class="wp-block-paragraph">Starten Sie Tomcat und rufen Sie im Browser auf:<br><code>https://127.0.0.1:8443</code></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Bei selbstsignierten Zertifikaten gibt der Browser eine „unsicher“‑Warnung aus, das ist normal. Für Produktivumgebungen kaufen Sie ein offizielles CA‑Zertifikat.</p>
</blockquote>



<h3 class="wp-block-heading">CAS‑Installation 5.0+</h3>



<h5 class="wp-block-heading">1. Ressourcen beziehen</h5>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">CAS 5.0+ verzichtet auf das klassische <code>war + Tomcat</code>‑Modell. Es basiert auf SpringBoot und liefert eine <strong>eigenständige ausführbare Jar‑Datei, ohne externes Tomcat</strong></p>
</blockquote>



<ol class="wp-block-list">
<li>CAS‑Server</li>
</ol>



<p class="wp-block-paragraph"><strong>Bereitstellungspaket online mit CAS Initializr erstellen</strong><br>https://casinitializr.apereo.org</p>



<h5 class="wp-block-heading">2. Ablauf der CAS‑Server‑Bereitstellung</h5>



<ol class="wp-block-list">
<li>CAS Initializr öffnen</li>
</ol>



<ul class="wp-block-list">
<li>CAS Version auswählen: <code>7.0.x</code> (aktuelle stabile Version)</li>



<li>Grundmodule auswählen: <code>Core / Web / SSL</code></li>



<li><code>cas.war</code> generieren und herunterladen (oder direkt die eigenständige <code>cas.jar</code> erstellen)</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Wählen Sie eines der beiden Paketverfahren:</p>



<ul class="wp-block-list">
<li>Modus A (empfohlen): <strong>Standalone (eigenständige Jar‑Datei)</strong>, integriertes Tomcat, sofort einsatzbereit</li>



<li>Modus B: Klassisches War‑Paket, kann auf externem Tomcat bereitgestellt werden (nicht empfohlen)</li>
</ul>
</blockquote>



<ol start="2" class="wp-block-list">
<li>Bereitstellung im【eigenständigen Jar‑Modus】(gängige Lösung)<br>1) Heruntergeladene Datei <code>cas.jar</code><br>2) Konfigurationsordner <code>./etc/cas/config</code> erstellen sowie die Konfigurationsdatei <code>cas.properties</code><br>3) Startbefehl (Java 17 oder höher ist zwingend erforderlich)</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">java</span> <span class="hljs-selector-tag">-jar</span> <span class="hljs-selector-tag">cas</span><span class="hljs-selector-class">.jar</span></code></span></pre>


<ol start="3" class="wp-block-list">
<li>Hinweise zu Port und HTTPS<br>Standard‑Port des integrierten Tomcat: <strong>8443 (HTTPS)</strong><br>Neue Versionen erzwingen standardmäßig HTTPS, entsprechend den Vorgaben älterer Versionen.</li>
</ol>



<h5 class="wp-block-heading">3. Zugriffsadresse</h5>


<pre class="wp-block-code"><span><code class="hljs language-javascript">https:<span class="hljs-comment">//127.0.0.1:8443/cas</span></code></span></pre>


<p class="wp-block-paragraph">Installation</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/de/2026/08/06/installation-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Einführung</title>
		<link>https://www.foxdevelop.com/de/2026/08/06/einfuehrung/</link>
					<comments>https://www.foxdevelop.com/de/2026/08/06/einfuehrung/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:37:12 +0000</pubDate>
				<category><![CDATA[CAS‑Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7796</guid>

					<description><![CDATA[Konzepte 1. CAS CAS (Central Authentication Service, Zentraler Authentifizierungsdienst)Ein quelloffenes Web‑SSO‑Framework (Single Sign‑On, Einmalanmeldung), das an der Yale‑Universität entwickelt wurde. 2. SSO (Single Sign‑On / Einmalanmeldung) 3. Drei Rollen im ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Konzepte</h3>



<h4 class="wp-block-heading">1. CAS</h4>



<p class="wp-block-paragraph"><strong>CAS (Central Authentication Service, Zentraler Authentifizierungsdienst)</strong><br>Ein quelloffenes <strong>Web‑SSO‑Framework (Single Sign‑On, Einmalanmeldung)</strong>, das an der Yale‑Universität entwickelt wurde.</p>



<h4 class="wp-block-heading">2. SSO (Single Sign‑On / Einmalanmeldung)</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Mehrere Webanwendungen nutzen eine zentrale Adresse zur Durchführung der Benutzer‑Anmelde‑ und Identitätsprüfung.</p>



<ul class="wp-block-list">
<li>Merkmale: Anwendungen kommunizieren über Web‑Protokolle (HTTPS) mit einem <strong>global eindeutigen Anmeldezugang</strong></li>



<li>Einfache Erklärung: Melden Sie sich im gleichen Browser einmal am Authentifizierungszentrum an, dann können Sie alle vertrauenswürdigen Dienste ohne erneute Anmeldung aufrufen</li>
</ul>
</blockquote>



<h4 class="wp-block-heading">3. Drei Rollen im SSO‑System</h4>



<ol class="wp-block-list">
<li>User: Endbenutzer (Web‑Browser)</li>



<li>Web‑Anwendungen (mehrere Fachsysteme)</li>



<li>SSO‑Authentifizierungszentrum (eindeutig)</li>
</ol>



<h4 class="wp-block-heading">4. Drei Kernprinzipien von SSO</h4>



<ol class="wp-block-list">
<li>Alle Anmeldevorgänge von Benutzerkonten werden <strong>ausschließlich im SSO‑Authentifizierungszentrum ausgeführt</strong>;</li>



<li>Das Authentifizierungszentrum stellt einen Mechanismus bereit, um jede Webanwendung darüber zu informieren, ob der aktuelle Benutzer authentifiziert ist;</li>



<li>Zwischen Authentifizierungszentrum und allen Fach‑Webanwendungen besteht eine vorab vereinbarte Vertrauensbeziehung.</li>
</ol>



<h5 class="wp-block-heading">Zwei zentrale Komponenten</h5>



<h4 class="wp-block-heading">CAS Server (Authentifizierungsserver)</h4>



<ul class="wp-block-list">
<li>Eigenständig bereitgestellte Webanwendung, das <strong>einzige Authentifizierungszentrum</strong></li>



<li>Aufgaben: Entgegennahme von Benutzername und Passwort, Prüfung der Benutzeridentität; Ausstellung von Tickets, Verwaltung des globalen Sitzungs‑Cookies TGC</li>
</ul>



<h4 class="wp-block-heading">CAS Client (Client, eingebettet in jedes Fachsystem)</h4>



<ul class="wp-block-list">
<li>Wird innerhalb jeder Fach‑Webanwendung ausgeführt, meist als Filter realisiert</li>



<li>Aufgaben: Abfangen von Anfragen auf geschützte Ressourcen; leitet den Browser bei fehlender Anmeldung automatisch auf die CAS‑Server‑Anmeldeseite um</li>
</ul>



<h4 class="wp-block-heading">Ablauf</h4>



<ol class="wp-block-list">
<li><strong>Benutzer ruft Ressourcen eines Fachsystems auf</strong> → CAS Client fängt die Anfrage ab und stellt fest, dass kein <code>Service Ticket</code> vorhanden ist</li>



<li>Der Client <strong>leitet den Browser um</strong> zur CAS‑Server‑Anmeldeadresse und übergibt die Adresse des aktuellen Fachsystems (Service)</li>



<li>Benutzer gibt Benutzername und Passwort auf dem CAS‑Server ein und schließt die Authentifizierung ab
<ul class="wp-block-list">
<li>Erfolgreiche Anmeldung: CAS Server schreibt in den Browser das <strong>TGC (Ticket Granting Cookie), globales Sitzungs‑Cookie</strong></li>



<li>Einmal‑Ticket wird erzeugt: <strong>Service Ticket (ST)</strong></li>
</ul>
</li>



<li>CAS Server leitet den Browser erneut auf die Adresse des Fachsystems um und hängt den URL‑Parameter <code>Ticket=xxx</code> an</li>



<li><strong>Der CAS Client des Fachsystems führt im Hintergrund eine Server‑zu‑Server‑Anfrage durch</strong> mit Service‑Adresse und Ticket zur Prüfung der Gültigkeit des Tickets am CAS‑Server</li>



<li>CAS Server bestätigt gültiges Ticket und gibt Benutzeridentitätsdaten (Benutzername u. a.) zurück</li>



<li>Prüfung erfolgreich, Fachsystem erstellt lokale Sitzung, Benutzer kann Seiten normal aufrufen</li>
</ol>



<p class="wp-block-paragraph"> <strong>Funktion von TGC</strong>: Solange der Browser das TGC‑Cookie behält, erscheint bei Aufruf weiterer CAS‑integrierter Systeme keine Anmeldeseite, die Einmalanmeldung läuft automatisch ab.</p>



<p class="wp-block-paragraph">Einführung</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/de/2026/08/06/einfuehrung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
