Pular para o conteúdo principal

Conectar um cliente CAS

Este guia explica como conectar uma aplicação que suporta o protocolo Central Authentication Service (CAS) ao Casdoor. O Casdoor é um servidor CAS para CAS 1.0, 2.0 e 3.0.


Resultados de aprendizagem​

  • Encontrar os endpoints CAS de uma aplicação Casdoor.
  • Permitir os serviços do cliente na aplicação.
  • Apontar um cliente CAS para o Casdoor.
  • Escolher a versão CAS usada pelo cliente.

O que você precisa​

  • Uma instância Casdoor em execução e uma application nela
  • Uma aplicação com um cliente CAS. O exemplo usa o Java CAS client.

Código de exemplo​


Endpoints CAS​

Cada aplicação Casdoor tem seus próprios endpoints CAS sob o prefixo:

<casdoor-host>/cas/<organization>/<application>

Por exemplo, para o site demo https://door.casdoor.com, a organização casbin e a aplicação cas-java-app, o prefixo é https://door.casdoor.com/cas/casbin/cas-java-app. O Casdoor serve os seguintes endpoints sob o prefixo:

EndpointCAS version
/loginAll
/logoutAll
/validate1.0
/serviceValidate2.0
/proxyValidate2.0
/proxy2.0
/p3/serviceValidate3.0
/p3/proxyValidate3.0
/samlValidateSAML 1.1 validation

Para os parâmetros de cada endpoint, veja a especificação do protocolo CAS.

Configurar a aplicação​

O Casdoor emite tickets apenas para serviços que a aplicação permite.

  1. No console de administração do Casdoor, abra a aplicação e vá até a aba OIDC/OAuth.
  2. Adicione a URL de cada serviço CAS, o parâmetro service enviado pelo cliente CAS, em Redirect URLs. Se o cliente usar autenticação por proxy, adicione também a URL de callback do proxy (pgtUrl) e as URLs dos serviços de destino de /proxy.
  3. Clique em Save.

O Casdoor compara o service com as Redirect URLs da mesma forma que uma URL de redirecionamento OAuth. Uma lista vazia não permite nenhum serviço, e URLs de script, como URLs javascript:, são sempre recusadas. Um login com um serviço que não é permitido falha com Redirect URI: <service> doesn't exist in the allowed Redirect URI list.

Validação de ticket​

Quando o cliente CAS valida um ticket, o Casdoor aplica estas regras:

  • O service da solicitação de validação deve ser exatamente o serviço para o qual o Casdoor emitiu o ticket, ou sua forma codificada em URL. Um serviço que apenas começa com o serviço emitido não corresponde.
  • Service tickets e proxy tickets funcionam uma vez e expiram 5 minutos após o Casdoor emiti-los. Um ticket usado ou expirado falha com INVALID_TICKET, ou com no em /validate.
  • /serviceValidate e /p3/serviceValidate aceitam apenas service tickets, que começam com ST. /proxyValidate e /p3/proxyValidate aceitam service tickets e proxy tickets.
  • pgtUrl deve ser uma URL https que está em Redirect URLs. Caso contrário, a validação falha com INVALID_PROXY_CALLBACK. O Casdoor chama o callback com um tempo limite de 10 segundos e não segue redirecionamentos. Para aplicações fora da organização built-in, o callback deve ser um endereço da Internet, não um endereço privado ou de loopback.
  • /proxy emite um proxy ticket apenas para um targetService que está em Redirect URLs. Caso contrário, responde UNAUTHORIZED_SERVICE.
cuidado

O Casdoor mantém os tickets na memória. Se você executar várias réplicas do Casdoor, roteie a solicitação de validação para a réplica que emitiu o ticket, por exemplo, com sessões fixas (sticky sessions), ou a validação falhará.

Configurar o cliente Java CAS​

A aplicação web Java de exemplo do Apereo CAS funciona com o Casdoor. Sua configuração CAS está em src/main/webapp/WEB-INF/web.xml.

  1. Altere todos os parâmetros casServerUrlPrefix para o prefixo CAS da sua aplicação Casdoor:

    <param-name>casServerUrlPrefix</param-name>
    <param-value>http://door.casdoor.com/cas/casbin/cas-java-app</param-value>
  2. Altere todos os parâmetros casServerLoginUrl para o endpoint /login:

    <param-name>casServerLoginUrl</param-name>
    <param-value>http://door.casdoor.com/cas/casbin/cas-java-app/login</param-value>
  3. Escolha a versão do CAS através do filtro de validação. Por padrão, o exemplo usa CAS 3.0:

    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>

    Para CAS 2.0, use:

    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>

    Para CAS 1.0, use:

    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>

Para outras configurações do cliente, veja o repositório do cliente Java CAS.

Veja também​