<?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/pt-pt/category/c-pt-pt/tutorial-cas-pt-pt/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>Estúdio Independente de Desenvolvimento de Software</description>
	<lastBuildDate>Thu, 06 Aug 2026 08:11:02 +0000</lastBuildDate>
	<language>pt-PT</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>Implementação do CAS</title>
		<link>https://www.foxdevelop.com/pt-pt/2026/08/06/implementacao-do-cas/</link>
					<comments>https://www.foxdevelop.com/pt-pt/2026/08/06/implementacao-do-cas/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 08:11:02 +0000</pubDate>
				<category><![CDATA[Tutorial CAS]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7833</guid>

					<description><![CDATA[Ideia de implementação da versão antiga do CAS Princípio central (protocolo CAS 1.0) Configuração do web.config Servidores CAS mais novos forçam HTTPS por padrão, o campo casUrl deve ser preenchido ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ideia de implementação da versão antiga do CAS</p>



<h4 class="wp-block-heading">Princípio central (protocolo CAS 1.0)</h4>



<ol class="wp-block-list">
<li>O usuário acessa a página protegida <code>/admin/admin.aspx</code></li>



<li>A configuração de permissões do <code>web.config</code> bloqueia usuários anônimos e redireciona automaticamente para a página de login <code>CasEnter.aspx</code></li>



<li><code>CasEnter.aspx</code> verifica se existe o parâmetro <code>ticket</code> na URL</li>
</ol>



<ul class="wp-block-list">
<li>Sem ticket: redireciona para o endereço de login do servidor CAS, enviando o endereço do site atual no parâmetro <code>service</code></li>



<li>Com ticket: chama a API <code>serviceValidate</code> para validar o billete no servidor CAS</li>
</ul>



<ol class="wp-block-list">
<li>O CAS retorna um XML, o nome de usuário logado é extraído do conteúdo</li>



<li>Após validação bem‑sucedida, executa <code>FormsAuthentication.SetAuthCookie()</code> para gravar o billete local do Forms e redireciona para a página alvo</li>



<li>Nas próximas requisições aos diretórios protegidos, o ASP.NET Forms reconhece o estado de autenticação</li>
</ol>



<h4 class="wp-block-heading">Configuração do 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 aponta para CasEnter.aspx como página intermediária de entrada do 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 o diretório admin para bloquear acesso anônimo --&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">Servidores CAS mais novos forçam HTTPS por padrão, o campo <code>casUrl</code> deve ser preenchido com <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;!-- Endereço da nova versão CAS7 com barra no 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 da página CasEnter.aspx</h4>



<h5 class="wp-block-heading">1. CasEnter.aspx código frontend</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>Login intermediário do 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>Refazer autenticação<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 de backend</h5>



<p class="wp-block-paragraph"><br>Interface atualizada para CAS3.0 <code>p3/serviceValidate</code><br>Adicionado HttpClient para substituir o WebClient obsoleto </p>



<p class="wp-block-paragraph">Adicionado suporte a certificados autoassinados (obrigatório para testes locais com o CAS novo)<br>Tratamento de namespace para o XML retornado pelo 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);

        // Sem billete, redireciona para página de login do CAS
        if (string.IsNullOrEmpty(ticket))
        {
            string redirectUrl = $"{casHost}login?service={Uri.EscapeDataString(service)}";
            Response.Redirect(redirectUrl);
            return;
        }

        // Validar o ticket
        string username = ValidateTicket(casHost, ticket, service);
        if (string.IsNullOrEmpty(username))
        {
            Label1.Text = "Desculpe! A autenticação do CAS falhou, tente novamente.";
            HyperLink1.NavigateUrl = Request.Url.AbsolutePath;
        }
        else
        {
            // Gravar billete de autenticação Forms e concluir login local
            FormsAuthentication.SetAuthCookie(username, false);
            // Redirecionar para a página alvo
            Response.Redirect(FormsAuthentication.DefaultUrl);
        }
    }

    /// <span class="hljs-tag">&lt;<span class="hljs-name">summary</span>&gt;</span>
    /// Validação de billete com 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)
    {
        // Versões novas do CAS recomendam p3/serviceValidate (protocolo CAS3.0)
        string validateUrl = $"{casHost}p3/serviceValidate?ticket={Uri.EscapeDataString(ticket)}&amp;service={Uri.EscapeDataString(service)}";

        // Apenas para teste local: permitir certificados SSL não confiáveis (remova em ambiente de produção!)
        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);
        // Namespace do XML retornado pelo CAS3
        nsMgr.AddNamespace("cas", "http://www.yale.edu/tp/cas");

        // Localizar nó do usuário
        XmlNode userNode = doc.SelectSingleNode("//cas:authenticationSuccess/cas:user", nsMgr);
        return userNode?.InnerText;
    }
}</code></span></pre>


<p class="wp-block-paragraph">Implementação do CAS</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/pt-pt/2026/08/06/implementacao-do-cas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação</title>
		<link>https://www.foxdevelop.com/pt-pt/2026/08/06/instalacao/</link>
					<comments>https://www.foxdevelop.com/pt-pt/2026/08/06/instalacao/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:58:39 +0000</pubDate>
				<category><![CDATA[Tutorial CAS]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7817</guid>

					<description><![CDATA[Instalação de versões antigas &#8211; Instruções para CAS anterior à versão 5.0 Pré‑requisitos 1. JDK Versão: (JDK) Java 17Link direto: Java Downloads &#124; Oracle ⚠️ Observação: O JDK7 é uma ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Instalação de versões antigas &#8211; Instruções para CAS anterior à versão 5.0</h3>



<ol class="wp-block-list">
<li>O servidor CAS é desenvolvido em Java e depende de dois ambientes principais para funcionar:</li>
</ol>



<ul class="wp-block-list">
<li><strong>JDK (Kit de Desenvolvimento Java)</strong>: Contém a Máquina Virtual Java (JVM), é a base para executar aplicações Java.</li>



<li><strong>Tomcat (Contêiner Web)</strong>: Utilizado para implantar e rodar o programa web war do CAS.</li>
</ul>



<ol class="wp-block-list">
<li>Ordem recomendada de instalação: <strong>instale primeiro o JDK → depois instale o Tomcat</strong> (durante a instalação, o Tomcat detecta automaticamente o JDK instalado na máquina).</li>
</ol>



<h4 class="wp-block-heading">Pré‑requisitos</h4>



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



<p class="wp-block-paragraph">Versão: (JDK) Java 17<br>Link direto: <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;" /> Observação: O JDK7 é uma versão descontinuada, compatível apenas com versões antigas do CAS; não é recomendado para novos projetos.</p>
</blockquote>



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



<p class="wp-block-paragraph">Versão: <strong>Tomcat (versão instalável para Windows)</strong><br><a href="https://tomcat.apache.org/">Apache Tomcat® &#8211; Welcome!</a></p>



<h4 class="wp-block-heading">Passo a passo da instalação</h4>



<ol class="wp-block-list">
<li><strong>Instalar o JDK</strong>
<ul class="wp-block-list">
<li>Execute o arquivo de instalação exe, você pode definir um caminho de instalação personalizado.</li>



<li>【Ponto chave】Após terminar a instalação, configure as variáveis de ambiente: <code>JAVA_HOME</code> e <code>Path</code>, para que o Tomcat identifique corretamente o ambiente Java.</li>
</ul>
</li>



<li><strong>Instalar o Tomcat7</strong>
<ul class="wp-block-list">
<li>Execute o instalador, ele fará uma varredura automática para localizar o JDK já instalado.</li>



<li>Você pode alterar a porta do Tomcat (padrão 8080) e configurar usuário e senha de administração.</li>



<li>Opções na tela final da instalação:</li>



<li> <code>Run Apache Tomcat</code>: Se marcado, o serviço Tomcat será iniciado automaticamente ao clicar em Finalizar.</li>



<li><code>Show Readme</code>: Você pode desmarcar essa opção, não é necessário ler o documento de apresentação.</li>



<li>Clique em <code>Finish</code> para concluir a instalação.</li>
</ul>
</li>
</ol>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Contexto importante: <strong>O protocolo CAS exige obrigatoriamente HTTPS no servidor, não aceita HTTP</strong>, por isso é preciso configurar um certificado SSL para o Tomcat.</p>
</blockquote>



<ol class="wp-block-list">
<li>Use a ferramenta <code>keytool</code> inclusa no JDK para gerar um <strong>armazenamento de chaves JKS (certificado autoassinado)</strong>.</li>



<li>Edite o arquivo <code>conf/server.xml</code> do Tomcat e habilite o conector SSL.</li>



<li>Reinicie o Tomcat e acesse <code>https://localhost:8443</code> para validar o HTTPS.</li>
</ol>



<h4 class="wp-block-heading">Gerar certificado autoassinado (JKS)</h4>



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



<ol class="wp-block-list">
<li>Crie uma pasta para armazenar certificados: exemplo <code>C:\Keys</code></li>



<li><strong>Execute o cmd como administrador</strong><br>&gt; No Windows7/10/11, ao usar um cmd comum para gravar arquivos na raiz da unidade C, ocorrerão erros de permissão.</li>



<li>Acesse a pasta bin do 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 modelo (compatível também com versões novas do 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">Explicação dos 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>Gera um par de chaves criptográficas</td></tr><tr><td><code>-alias tomcat</code></td><td>Apelido do certificado, pode ser personalizado</td></tr><tr><td><code>-keyalg RSA</code></td><td>Algoritmo de criptografia, padrão RSA</td></tr><tr><td><code>-storepass changeit</code></td><td><strong>Senha do armazenamento de chaves</strong> (anote‑a, será usada na configuração posterior do Tomcat)</td></tr><tr><td><code>-keystore c:\Keys\.keystore</code></td><td>Caminho de saída do arquivo de certificado</td></tr><tr><td><code>-validity 36000</code></td><td>Validade do certificado em dias</td></tr></tbody></table></figure>



<h5 class="wp-block-heading">Dados para preenchimento interativo</h5>



<p class="wp-block-paragraph">Após rodar o comando, informe os dados na sequência:</p>



<ol class="wp-block-list">
<li>Nome e sobrenome: informe o domínio (para ambiente de estudo pode preencher qualquer valor)</li>



<li>Unidade organizacional, organização, cidade, estado, código do país (cn)</li>



<li>Confirme os dados digitando <code>y</code></li>



<li>Senha da chave: <strong>aperte Enter diretamente, use a mesma senha do armazenamento de chaves</strong></li>
</ol>



<h5 class="wp-block-heading">Comando para visualizar o 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">Informe a senha. Se as informações forem exibidas corretamente, o certificado foi gerado com sucesso.</p>



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



<ol class="wp-block-list">
<li>Abra o arquivo <code>Tomcat/conf/server.xml</code></li>



<li>Localize o Conector SSL comentado, remova os comentários e altere o caminho do certificado e a senha.</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">Detalhes dos parâmetros</h5>



<ul class="wp-block-list">
<li><code>port="8443"</code>: Porta HTTPS padrão do Tomcat (a porta HTTPS oficial é 443; se quiser usar ela, fique atento a permissões e conflitos de porta)</li>



<li><code>keystoreFile</code>: Caminho absoluto do arquivo de certificado que você gerou</li>



<li><code>keystorePass</code>: Senha do armazenamento de chaves definida no keytool</li>



<li><code>clientAuth="false"</code>: Não exige certificado do cliente (mantenha false para ambientes de estudo)</li>
</ul>



<h4 class="wp-block-heading">Método de validação</h4>



<p class="wp-block-paragraph">Inicie o Tomcat e acesse pelo 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">Navegadores exibirão aviso de site inseguro para certificados autoassinados, isso é normal. Em ambiente de produção compre um certificado CA confiável.</p>
</blockquote>



<h3 class="wp-block-heading">Instalação do CAS 5.0+</h3>



<h5 class="wp-block-heading">1. Obter os recursos</h5>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">O CAS 5.0+ abandona o modelo tradicional <code>war + Tomcat</code>. Ele é baseado no SpringBoot, <strong>distribuído como Jar executável independente, sem necessidade de Tomcat externo</strong>.</p>
</blockquote>



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



<p class="wp-block-paragraph"><strong>Gere pacotes de implantação online com o CAS Initializr</strong><br>https://casinitializr.apereo.org</p>



<h5 class="wp-block-heading">2. Passos para implantar o servidor CAS</h5>



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



<ul class="wp-block-list">
<li>Selecione a versão do CAS: <code>7.0.x</code> (versão estável mais recente)</li>



<li>Selecione os módulos básicos: <code>Core / Web / SSL</code></li>



<li>Gere e baixe o arquivo <code>cas.war</code> (ou gere diretamente o arquivo independente <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">Escolha um dos dois formatos de empacotamento:</p>



<ul class="wp-block-list">
<li>Modo A (recomendado): <strong>Standalone (Jar independente)</strong>, vem com Tomcat embutido, pronto para uso</li>



<li>Modo B: Pacote War tradicional, para implantar em um Tomcat externo (não recomendado)</li>
</ul>
</blockquote>



<ol start="2" class="wp-block-list">
<li>Implantação no modo Jar independente (solução mais utilizada)<br>1) Baixe o arquivo <code>cas.jar</code><br>2) Crie a pasta de configuração <code>./etc/cas/config</code> e o arquivo de configuração <code>cas.properties</code><br>3) Comando de inicialização (obrigatório Java 17 ou 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>Sobre porta e HTTPS<br>Porta padrão do Tomcat embutido: <strong>8443 (HTTPS)</strong><br>Nas versões novas o HTTPS é obrigatório por padrão, seguindo as mesmas regras das versões antigas.</li>
</ol>



<h5 class="wp-block-heading">3. Endereço de acesso</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">Instalação</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/pt-pt/2026/08/06/instalacao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apresentação</title>
		<link>https://www.foxdevelop.com/pt-pt/2026/08/06/apresentacao/</link>
					<comments>https://www.foxdevelop.com/pt-pt/2026/08/06/apresentacao/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:39:26 +0000</pubDate>
				<category><![CDATA[Tutorial CAS]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7800</guid>

					<description><![CDATA[Conceitos 1. CAS CAS (Central Authentication Service, Serviço Central de Autenticação)Um framework open‑source de SSO Web (Single Sign‑On, Login Único) criado pela Universidade de Yale. 2. SSO (Login Único) 3. ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Conceitos</h3>



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



<p class="wp-block-paragraph"><strong>CAS (Central Authentication Service, Serviço Central de Autenticação)</strong><br>Um framework open‑source de <strong>SSO Web (Single Sign‑On, Login Único)</strong> criado pela Universidade de Yale.</p>



<h4 class="wp-block-heading">2. SSO (Login Único)</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Reúne a validação de login de vários sistemas web em um único endereço.</p>



<ul class="wp-block-list">
<li>Características: Os aplicativos trocam dados por meio de protocolos web (HTTPS), contando com um <strong>ponto de login global exclusivo</strong></li>



<li>Entendimento simples: Faça login uma única vez no centro de autenticação no mesmo navegador e acesse todos os sites confiáveis sem precisar logar novamente</li>
</ul>
</blockquote>



<h4 class="wp-block-heading">3. Três papéis do sistema SSO</h4>



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



<li>Aplicativos web (múltiplos sistemas de negócio)</li>



<li>Centro de autenticação SSO (instância única)</li>
</ol>



<h4 class="wp-block-heading">4. Três princípios centrais do SSO</h4>



<ol class="wp-block-list">
<li>Todas as operações de login de contas são <strong>executadas no centro de autenticação SSO</strong>;</li>



<li>O centro de autenticação dispõe de mecanismos para avisar cada aplicativo web se o usuário já foi autenticado;</li>



<li>Uma relação de confiança é estabelecida antecipadamente entre o centro de autenticação e todos os aplicativos web de negócio.</li>
</ol>



<h5 class="wp-block-heading">Dois componentes principais</h5>



<h4 class="wp-block-heading">CAS Server (Servidor de autenticação)</h4>



<ul class="wp-block-list">
<li>Aplicativo web implantado de forma independente, ele funciona como o <strong>único centro de autenticação</strong></li>



<li>Responsabilidades: Receber login e senha, validar a identidade do usuário; emitir tickets, gerenciar o cookie de sessão global TGC</li>
</ul>



<h4 class="wp-block-heading">CAS Client (Cliente embutido em cada sistema de negócio)</h4>



<ul class="wp-block-list">
<li>É implantado dentro de cada aplicativo web de negócio, normalmente implementado como um filtro Filter</li>



<li>Responsabilidades: Interceptar requisições para recursos protegidos; quando o usuário não estiver logado, redireciona automaticamente o navegador para a página de login do CAS Server</li>
</ul>



<h4 class="wp-block-heading">Fluxo de operação</h4>



<ol class="wp-block-list">
<li><strong>Usuário acessa recursos do sistema de negócio</strong> → O CAS Client intercepta a requisição e constata a ausência do <code>Service Ticket</code></li>



<li>O cliente <strong>redireciona</strong> o navegador para o endereço de login do CAS Server, enviando o endereço do sistema de negócio (Service)</li>



<li>O usuário informa login e senha no CAS Server para concluir a autenticação
<ul class="wp-block-list">
<li>Login bem‑sucedido: O CAS Server grava no navegador o <strong>TGC (Ticket Granting Cookie), cookie de sessão global</strong></li>



<li>Gera um ticket de uso único: <strong>Service Ticket (ST)</strong></li>
</ul>
</li>



<li>O CAS Server redireciona novamente o navegador para o sistema de negócio, incluindo o parâmetro de URL <code>Ticket=xxx</code></li>



<li><strong>O CAS Client do sistema de negócio dispara uma requisição servidor‑para‑servidor em segundo plano</strong>, enviando endereço Service e Ticket para validar a autenticidade do ticket no CAS Server</li>



<li>O CAS Server valida o ticket e retorna os dados de identidade do usuário (nome de usuário e demais informações)</li>



<li>Com validação aprovada, o sistema de negócio cria uma sessão local e o usuário consegue navegar pelas páginas normalmente</li>
</ol>



<p class="wp-block-paragraph"> <strong>Função do TGC</strong>: Enquanto o navegador mantiver o cookie TGC, ao acessar outros sistemas integrados ao CAS não será exibida a tela de login, e o login único ocorrerá de forma automática.</p>



<p class="wp-block-paragraph">Apresentação</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/pt-pt/2026/08/06/apresentacao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
