Labs SD >
O objetivo deste exercício é fazer uma autenticação no Kerberos e depois usar a chave de sessão para proteger dados.
Comece por se familiarizar com o Kerberos simplificado, tal como apresentado nas aulas teóricas.
Instalação dos módulos
Descarregar e descompactar o ficheiro kerby.zip
Para compilar e instalar os módulos, fazer:
cd kerby
mvn clean install -DskipTests
O servidor Kerberos a utilizar está disponível no seguinte endereço: http://sec.sd.rnl.tecnico.ulisboa.pt:8888/kerby.
Cada grupo já tem um conjunto de utilizadores criados à partida.
As senhas de utilizadores foram distribuídas no ficheiro CXX-secrets.txt colocado no repositório GitHub do grupo.
Os utilizadores existentes são: alice@CXX.binas.org, binas@CXX.binas.org, charlie@CXX.binas.org e eve@CXX.binas.org.
O utilizador binas@CXX.binas.org é a identidade do Web Service binas-ws.
Vamos então experimentar o Kerberos simplificado.
O módulo kerby-experiment deve ser usado para testar a biblioteca e usar o servidor Kerberos a correr na RNL.
A dependência kerby-lib vai trazer consigo todas as bibliotecas necessárias, como se pode ver:
cd kerby-experiment
mvn dependency:tree
A classe KerbyExperiment é executável:
mvn clean package exec:java
Será necessário agora fazer o código correspondente ao papel do "cliente" no protocolo, e depois o "servidor".
O código deve ser feito gradualmente, passo a passo, compilando e executando regularmente para testar o funcionamento.
A ideia é que, antes de se tentar implementar um sistema cliente-servidor realmente distribuído e que recorra à autenticação via Kerby, vamos começar por construir um programa meramente local que implementa os principais passos da autenticação Kerberos mas sem trocar mensagens. Este programa permitir-nos-á aprender e dominar as técnicas bases, antes de depois as aplicarmos num sistema efetivamente distribuído (em que cliente e servidor são processos distintos que trocam mensagens segundo o protocolo de autenticação).
Esse programa simplificado encontra-se esboçado no método main da classe KerbyExperiment do módulo kerby-experiment. No entanto, o código que fornecemos para este método está incompleto. Pretende-se neste exercício completá-lo. Como resultado final, o programa criado permitirá testar a biblioteca kerby-lib e usar o servidor Kerberos a correr na RNL.
Parte "cliente".
A classe RequestTicketIT.java nos testes de kerby-lib exemplifica como interagir com o Kerberos.
Parte "servidor"
O que falta fazer?
Este código permite experimentar a biblioteca e o servidor Kerberos, para implementar as partes "cliente" e "servidor" do protocolo sem que exista real comunicação entre os dois (tudo se passa no mesmo processo, para já).
A chave de sessão, Kcs, deve ser usada para proteger a integridade de uma "mensagem".
Continuação no próximo laboratório
O passo seguinte será incorporar o protocolo de segurança nas mensagens SOAP trocadas entre binas-ws-cli e binas-ws. Para isso, será necessário utilizar JAX-WS SOAP Handlers, como veremos no próximo laboratório.
Bom trabalho!
© Docentes de Sistemas Distribuídos,
Dep. Eng. Informática,
Técnico Lisboa