<?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>Tutorial CAS &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/es/category/c-es/tutorial-cas/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>Estudio Independiente de Desarrollo de Software</description>
	<lastBuildDate>Thu, 06 Aug 2026 08:10:14 +0000</lastBuildDate>
	<language>es</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>Tutorial CAS &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Implementación de CAS</title>
		<link>https://www.foxdevelop.com/es/2026/08/06/implementacion-de-cas/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/06/implementacion-de-cas/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 08:10:13 +0000</pubDate>
				<category><![CDATA[Tutorial CAS]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7831</guid>

					<description><![CDATA[Idea de implementación de la versión antigua de CAS Principio fundamental (protocolo CAS 1.0) Configuración de web.config Los servidores CAS modernos fuerzan HTTPS por defecto, casUrl debe completarse con https://127.0.0.1:8443/cas/ ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Idea de implementación de la versión antigua de CAS</p>



<h4 class="wp-block-heading">Principio fundamental (protocolo CAS 1.0)</h4>



<ol class="wp-block-list">
<li>El usuario accede a la página protegida <code>/admin/admin.aspx</code></li>



<li>La configuración de permisos de <code>web.config</code> bloquea usuarios anónimos y redirige automáticamente a la página de inicio de sesión <code>CasEnter.aspx</code></li>



<li><code>CasEnter.aspx</code> comprueba si la URL contiene el parámetro <code>ticket</code></li>
</ol>



<ul class="wp-block-list">
<li>Sin ticket: redirige a la dirección de inicio de sesión del servidor CAS y envía la dirección actual del sitio como valor <code>service</code></li>



<li>Con ticket: llama a la interfaz <code>serviceValidate</code> para validar el billete contra el servidor CAS</li>
</ul>



<ol class="wp-block-list">
<li>CAS devuelve XML, se extrae el nombre de usuario autenticado</li>



<li>Tras una validación correcta, se invoca <code>FormsAuthentication.SetAuthCookie()</code> para generar el billete local de Forms y se redirige a la página destino</li>



<li>En accesos posteriores a directorios protegidos, ASP.NET Forms detecta el estado de la sesión</li>
</ol>



<h4 class="wp-block-heading">Configuración de web.config</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 apunta a CasEnter.aspx como página de entrada intermediaria de CAS --&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;!-- Restringe el directorio admin para impedir accesos anónimos --&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">Los servidores CAS modernos fuerzan HTTPS por defecto, <code>casUrl</code> debe completarse con <code>https://127.0.0.1:8443/cas/</code></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;!-- Dirección de la nueva versión CAS7 con barra final --&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">Código de la página CasEnter.aspx</h4>



<h5 class="wp-block-heading">1. CasEnter.aspx parte frontal</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>Inicio de sesión intermediario CAS<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>Volver a autenticar<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 lógica backend</h5>



<p class="wp-block-paragraph"><br>Interfaz actualizada a CAS3.0 <code>p3/serviceValidate</code><br>Se agrega HttpClient para reemplazar el obsoleto WebClient </p>



<p class="wp-block-paragraph">Se añade compatibilidad con certificados autofirmados (imprescindible para pruebas locales con CAS moderno)<br>Gestión del espacio de nombres para el XML devuelto por CAS</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);

        // Sin billete, redirige a la página de inicio de sesión de CAS
        if (string.IsNullOrEmpty(ticket))
        {
            string redirectUrl = $"{casHost}login?service={Uri.EscapeDataString(service)}";
            Response.Redirect(redirectUrl);
            return;
        }

        // Validar ticket
        string username = ValidateTicket(casHost, ticket, service);
        if (string.IsNullOrEmpty(username))
        {
            Label1.Text = "¡Lo sentimos! Falló la autenticación CAS, inténtelo de nuevo.";
            HyperLink1.NavigateUrl = Request.Url.AbsolutePath;
        }
        else
        {
            // Generar billete de autenticación Forms y completar inicio de sesión local
            FormsAuthentication.SetAuthCookie(username, false);
            // Redirigir a la página destino
            Response.Redirect(FormsAuthentication.DefaultUrl);
        }
    }

    /// <span class="hljs-tag">&lt;<span class="hljs-name">summary</span>&gt;</span>
    /// Validación de billete mediante 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)
    {
        // Las versiones nuevas de CAS recomiendan p3/serviceValidate (protocolo CAS3.0)
        string validateUrl = $"{casHost}p3/serviceValidate?ticket={Uri.EscapeDataString(ticket)}&amp;service={Uri.EscapeDataString(service)}";

        // Solo para pruebas locales: permitir certificados SSL no confiables (eliminar en producción!)
        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);
        // Espacio de nombres del XML devuelto por CAS3
        nsMgr.AddNamespace("cas", "http://www.yale.edu/tp/cas");

        // Buscar nodo de usuario
        XmlNode userNode = doc.SelectSingleNode("//cas:authenticationSuccess/cas:user", nsMgr);
        return userNode?.InnerText;
    }
}</code></span></pre>


<p class="wp-block-paragraph">Implementación de CAS</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/06/implementacion-de-cas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Instalación</title>
		<link>https://www.foxdevelop.com/es/2026/08/06/instalacion/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/06/instalacion/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:57:48 +0000</pubDate>
				<category><![CDATA[Tutorial CAS]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7815</guid>

					<description><![CDATA[Instalación de versiones antiguas &#8211; Notas para CAS anterior a 5.0 Requisitos previos 1. JDK Versión: (JDK) Java 17Enlace directo: Java Downloads &#124; Oracle ⚠️ Aviso: JDK7 es una versión ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Instalación de versiones antiguas &#8211; Notas para CAS anterior a 5.0</h3>



<ol class="wp-block-list">
<li>El servidor CAS está desarrollado en Java y requiere dos entornos fundamentales para ejecutarse:</li>
</ol>



<ul class="wp-block-list">
<li><strong>JDK (Kit de Desarrollo Java)</strong>: Incluye la Máquina Virtual Java (JVM), es el entorno base necesario para ejecutar programas Java.</li>



<li><strong>Tomcat (Contenedor Web)</strong>: Se usa para desplegar y ejecutar el archivo war web de CAS.</li>
</ul>



<ol class="wp-block-list">
<li>Orden recomendado de instalación: <strong>primero instalar JDK → luego instalar Tomcat</strong> (Tomcat detectará automáticamente el JDK instalado en el equipo durante su instalación).</li>
</ol>



<h4 class="wp-block-heading">Requisitos previos</h4>



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



<p class="wp-block-paragraph">Versión: (JDK) Java 17<br>Enlace directo: <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;" /> Aviso: JDK7 es una versión obsoleta, solo sirve para versiones antiguas de CAS; no se recomienda para proyectos nuevos.</p>
</blockquote>



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



<p class="wp-block-paragraph">Versión: <strong>Tomcat (versión instalable para Windows)</strong><br><a href="https://tomcat.apache.org/">Apache Tomcat® &#8211; Welcome!</a></p>



<h4 class="wp-block-heading">Proceso de instalación</h4>



<ol class="wp-block-list">
<li><strong>Instalar JDK</strong>
<ul class="wp-block-list">
<li>Ejecuta el instalador exe, puedes definir una ruta de instalación personalizada.</li>



<li>【Punto importante】Después de finalizar la instalación, configura las variables de entorno: <code>JAVA_HOME</code> y <code>Path</code>, para que Tomcat reconozca correctamente el entorno Java.</li>
</ul>
</li>



<li><strong>Instalar Tomcat7</strong>
<ul class="wp-block-list">
<li>Ejecuta el instalador, este detectará automáticamente el JDK ya instalado en tu equipo.</li>



<li>Puedes modificar el puerto de Tomcat (predeterminado 8080) y configurar usuario y contraseña de administración.</li>



<li>Opciones de la pantalla final de instalación:</li>



<li> <code>Run Apache Tomcat</code>: Si lo marcas, el servicio Tomcat se iniciará automáticamente al pulsar Finalizar.</li>



<li><code>Show Readme</code>: Puedes desmarcarlo, no necesitas consultar la documentación de instalación.</li>



<li>Pulsa <code>Finish</code> para completar la instalación.</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">Configurar SSL/HTTPS en Tomcat</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Contexto fundamental: <strong>El protocolo CAS exige obligatoriamente el uso de HTTPS en el servidor, no admite HTTP</strong>, por lo tanto debes configurar un certificado SSL para Tomcat.</p>
</blockquote>



<ol class="wp-block-list">
<li>Usa la herramienta <code>keytool</code> incluida en JDK para generar un <strong>almacén de claves JKS (certificado autofirmado)</strong>.</li>



<li>Edita el archivo <code>conf/server.xml</code> de Tomcat y activa el conector SSL.</li>



<li>Reinicia Tomcat y accede a <code>https://localhost:8443</code> para comprobar el funcionamiento de HTTPS.</li>
</ol>



<h4 class="wp-block-heading">Generar certificado autofirmado (JKS)</h4>



<h5 class="wp-block-heading">Preparativos previos</h5>



<ol class="wp-block-list">
<li>Crea una carpeta para guardar certificados: ejemplo <code>C:\Keys</code></li>



<li><strong>Ejecuta cmd como administrador</strong><br>&gt; En Windows7/10/11, si usas un cmd normal para escribir archivos en la raíz de la unidad C, aparecerán errores por falta de permisos.</li>



<li>Navega hasta la carpeta bin de 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">Comando plantilla válido también para versiones nuevas de JDK</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">Explicación de parámetros</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Parámetro</th><th>Significado</th></tr></thead><tbody><tr><td><code>-genkey</code></td><td>Genera un par de claves criptográficas</td></tr><tr><td><code>-alias tomcat</code></td><td>Alias del certificado, se puede personalizar</td></tr><tr><td><code>-keyalg RSA</code></td><td>Algoritmo de cifrado, estándar RSA</td></tr><tr><td><code>-storepass changeit</code></td><td><strong>Contraseña del almacén de claves</strong> (recuérdala, la necesitarás más adelante para configurar Tomcat)</td></tr><tr><td><code>-keystore c:\Keys\.keystore</code></td><td>Ruta de salida del archivo de certificado</td></tr><tr><td><code>-validity 36000</code></td><td>Vigencia del certificado en días</td></tr></tbody></table></figure>



<h5 class="wp-block-heading">Datos que debes introducir interactivamente</h5>



<p class="wp-block-paragraph">Tras ejecutar el comando introduce los datos uno por uno:</p>



<ol class="wp-block-list">
<li>Nombre y apellidos: introduce tu nombre de dominio (en entornos de aprendizaje puedes poner cualquier valor)</li>



<li>Unidad organizativa, organización, ciudad, provincia, código de país (cn)</li>



<li>Confirma los datos escribiendo <code>y</code></li>



<li>Contraseña de clave: <strong>pulsa directamente Intro, usa la misma contraseña que el almacén de claves</strong></li>
</ol>



<h5 class="wp-block-heading">Comando para consultar el certificado</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">Introduce la contraseña, si se muestra la información correctamente el certificado se generó con éxito.</p>



<h4 class="wp-block-heading">Configurar el conector SSL en Tomcat server.xml</h4>



<ol class="wp-block-list">
<li>Abre el archivo <code>Tomcat/conf/server.xml</code></li>



<li>Busca el conector SSL comentado, elimina los comentarios y modifica la ruta del certificado y su contraseña.</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">Descripción de parámetros</h5>



<ul class="wp-block-list">
<li><code>port="8443"</code>: Puerto HTTPS predeterminado de Tomcat (el puerto estándar HTTPS es 443; si quieres usarlo ten cuidado con permisos y ocupación de puertos)</li>



<li><code>keystoreFile</code>: Ruta absoluta al archivo de certificado que generaste</li>



<li><code>keystorePass</code>: Contraseña del almacén de claves que definiste con keytool</li>



<li><code>clientAuth="false"</code>: No requiere certificado de cliente (dejar en false para entornos de aprendizaje)</li>
</ul>



<h4 class="wp-block-heading">Método de comprobación</h4>



<p class="wp-block-paragraph">Inicia Tomcat y accede desde tu navegador:<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">El navegador mostrará una advertencia de sitio no seguro para certificados autofirmados, esto es normal; para entornos de producción debes adquirir un certificado CA oficial.</p>
</blockquote>



<h3 class="wp-block-heading">Instalación de CAS 5.0+</h3>



<h5 class="wp-block-heading">1. Obtención de recursos</h5>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">CAS 5.0+ abandona el modelo tradicional <code>war + Tomcat</code>. Está construido sobre SpringBoot, <strong>se distribuye como archivo Jar ejecutable independiente, no necesita Tomcat externo</strong>.</p>
</blockquote>



<ol class="wp-block-list">
<li>Servidor CAS (Server)</li>
</ol>



<p class="wp-block-paragraph"><strong>Genera paquetes de despliegue con CAS Initializr en línea</strong><br>https://casinitializr.apereo.org</p>



<h5 class="wp-block-heading">2. Pasos para desplegar el servidor CAS</h5>



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



<ul class="wp-block-list">
<li>Selecciona la versión de CAS: <code>7.0.x</code> (última versión estable)</li>



<li>Marca los módulos básicos: <code>Core / Web / SSL</code></li>



<li>Genera y descarga <code>cas.war</code> (o genera directamente el archivo independiente <code>cas.jar</code>)</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Puedes elegir cualquiera de los dos formatos de empaquetado:</p>



<ul class="wp-block-list">
<li>Modo A (recomendado): <strong>Standalone (Jar independiente)</strong>, trae Tomcat integrado, listo para usar</li>



<li>Modo B: Paquete War tradicional, para desplegar sobre un Tomcat externo (no recomendado)</li>
</ul>
</blockquote>



<ol start="2" class="wp-block-list">
<li>Despliegue en modo Jar independiente (solución más usada)<br>1) Descarga el archivo <code>cas.jar</code><br>2) Crea la carpeta de configuración <code>./etc/cas/config</code> y el archivo de configuración <code>cas.properties</code><br>3) Comando de arranque (requiere Java 17 o superior)</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>Acerca del puerto y HTTPS<br>Puerto predeterminado del Tomcat integrado: <strong>8443 (HTTPS)</strong><br>Las versiones nuevas exigen HTTPS por defecto, siguiendo las mismas reglas que las versiones antiguas.</li>
</ol>



<h5 class="wp-block-heading">3. Dirección de acceso</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">Instalación</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/06/instalacion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Presentación</title>
		<link>https://www.foxdevelop.com/es/2026/08/06/presentacion/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/06/presentacion/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:39:11 +0000</pubDate>
				<category><![CDATA[Tutorial CAS]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7798</guid>

					<description><![CDATA[Conceptos 1. CAS CAS (Central Authentication Service, Servicio Central de Autenticación)Framework de código abierto para SSO Web (Inicio de Sesión Único), desarrollado por la Universidad de Yale. 2. SSO (Inicio ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Conceptos</h3>



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



<p class="wp-block-paragraph"><strong>CAS (Central Authentication Service, Servicio Central de Autenticación)</strong><br>Framework de código abierto para <strong>SSO Web (Inicio de Sesión Único)</strong>, desarrollado por la Universidad de Yale.</p>



<h4 class="wp-block-heading">2. SSO (Inicio de Sesión Único)</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Consiste en centralizar la validación de credenciales de múltiples aplicaciones web en una única dirección.</p>



<ul class="wp-block-list">
<li>Características: Las aplicaciones se comunican mediante protocolos web (HTTPS), con un <strong>punto de acceso de inicio de sesión global único</strong></li>



<li>Explicación práctica: Si inicias sesión una sola vez en el centro de autenticación desde el mismo navegador, podrás ingresar a todos los sitios confiables sin volver a autenticarte</li>
</ul>
</blockquote>



<h4 class="wp-block-heading">3. Tres actores del ecosistema SSO</h4>



<ol class="wp-block-list">
<li>User: Usuario final (navegador web)</li>



<li>Aplicaciones web (varios sistemas empresariales)</li>



<li>Centro de autenticación SSO (instancia única)</li>
</ol>



<h4 class="wp-block-heading">4. Tres principios fundamentales del SSO</h4>



<ol class="wp-block-list">
<li>Todos los inicios de sesión de cuentas se ejecutan <strong>exclusivamente en el centro de autenticación SSO</strong>;</li>



<li>El centro de autenticación cuenta con mecanismos para informar a cada aplicación web si el usuario ya validó su identidad;</li>



<li>Se establece una relación de confianza previa entre el centro de autenticación y cada una de las aplicaciones web empresariales.</li>
</ol>



<h5 class="wp-block-heading">Dos componentes esenciales</h5>



<h4 class="wp-block-heading">CAS Server (Servidor de autenticación)</h4>



<ul class="wp-block-list">
<li>Aplicación web desplegada de forma independiente, funciona como el <strong>único centro de autenticación</strong></li>



<li>Responsabilidades: Recibir usuario y contraseña, validar la identidad del usuario; emitir tickets, administrar la cookie de sesión global TGC</li>
</ul>



<h4 class="wp-block-heading">CAS Client (Cliente integrado en cada sistema empresarial)</h4>



<ul class="wp-block-list">
<li>Se instala dentro de cada aplicación web empresarial, usualmente implementado como un filtro Filter</li>



<li>Responsabilidades: Interceptar solicitudes hacia recursos protegidos; si el usuario no inició sesión, redirige automáticamente el navegador a la página de acceso del CAS Server</li>
</ul>



<h4 class="wp-block-heading">Flujo de funcionamiento</h4>



<ol class="wp-block-list">
<li><strong>El usuario accede a recursos del sistema empresarial</strong> → El CAS Client intercepta la petición y detecta que no existe el valor <code>Service Ticket</code></li>



<li>El cliente <strong>redirige</strong> el navegador hacia la dirección de inicio de sesión del CAS Server, enviando la dirección del sistema empresarial (Service)</li>



<li>El usuario ingresa sus credenciales en el CAS Server para completar la autenticación
<ul class="wp-block-list">
<li>Inicio de sesión exitoso: El CAS Server guarda en el navegador la <strong>TGC (Ticket Granting Cookie), cookie de sesión global</strong></li>



<li>Genera un ticket de un solo uso: <strong>Service Ticket (ST)</strong></li>
</ul>
</li>



<li>El CAS Server vuelve a redirigir el navegador al sistema empresarial, agregando el parámetro URL <code>Ticket=xxx</code></li>



<li><strong>El CAS Client del sistema empresarial realiza una petición de servidor a servidor en segundo plano</strong>, envía la dirección Service y el Ticket para validar su legitimidad ante el CAS Server</li>



<li>El CAS Server confirma que el ticket es válido y devuelve los datos de identidad del usuario (nombre de usuario, entre otros)</li>



<li>Tras la validación correcta, el sistema empresarial crea una sesión local y el usuario puede navegar normalmente por las páginas</li>
</ol>



<p class="wp-block-paragraph"> <strong>Función de la TGC</strong>: Mientras el navegador conserve la cookie TGC, al acceder a otros sistemas integrados con CAS no aparecerá la pantalla de inicio de sesión y el inicio de sesión único se ejecutará de forma automática.</p>



<p class="wp-block-paragraph">Presentación</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/06/presentacion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
