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:
| Endpoint | CAS version |
|---|---|
/login | All |
/logout | All |
/validate | 1.0 |
/serviceValidate | 2.0 |
/proxyValidate | 2.0 |
/proxy | 2.0 |
/p3/serviceValidate | 3.0 |
/p3/proxyValidate | 3.0 |
/samlValidate | SAML 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.
- No console de administração do Casdoor, abra a aplicação e vá até a aba OIDC/OAuth.
- Adicione a URL de cada serviço CAS, o parâmetro
serviceenviado 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. - 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
serviceda 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 comnoem/validate. /serviceValidatee/p3/serviceValidateaceitam apenas service tickets, que começam comST./proxyValidatee/p3/proxyValidateaceitam service tickets e proxy tickets.pgtUrldeve ser uma URLhttpsque está em Redirect URLs. Caso contrário, a validação falha comINVALID_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çãobuilt-in, o callback deve ser um endereço da Internet, não um endereço privado ou de loopback./proxyemite um proxy ticket apenas para umtargetServiceque está em Redirect URLs. Caso contrário, respondeUNAUTHORIZED_SERVICE.
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.
-
Altere todos os parâmetros
casServerUrlPrefixpara 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> -
Altere todos os parâmetros
casServerLoginUrlpara o endpoint/login:<param-name>casServerLoginUrl</param-name>
<param-value>http://door.casdoor.com/cas/casbin/cas-java-app/login</param-value> -
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.