linea-it / lsp_daiquiri

Fork do daiquiri app para prova de conceito de sua utilização no contexto do LIneA LSP. como possivel substituto ao userquery.
Apache License 2.0
0 stars 0 forks source link

Informações do usuário a partir do LIneA #57

Closed glaubervila closed 1 month ago

glaubervila commented 2 months ago

Após o Login Federado, foi identificado um problema com o username retornado pelo IDP.
Basicamente o username/eppn é um email contendo @ para o userquery/daiquiri isto é um problema, pois o username é utilizado para gerar o MYDB do usuario.

O Mydb basicamente é um schema postgresql criado no banco pelo userquery.

Seguindo o Exemplo para meu usuario: EPPN Retornado pelo IDP (identificação unica): 3c23a1f2c7544f5cd31f59e7d7b0a35b@linea.org.br Username no LIneA (LDAP): glauber.costa Schema MYDB : mydb_3c23a1f2c7544f5cd31f59e7d7b0a35b@linea.org.br

este schema é inviavel por dois motivos, sendo o primeiro ser ilegivel e de dificil memorização pelo usuario que vai precisar saber o seu schema e tables para usar em outros lugares, o segundo é que o @ é considerado caracter especial fazendo com que algumas funções do daiquiri não funcionem corretamente.

Após breve conversa com o @carlosadean foi sugerido uma consulta a infra do linea usando um dos ids unicos do usuario exemplo email. para saber o username ldap do usuario.

Sugiro que essa consulta seja feito no metodo make_profile do classe Midleware do shibboleth. pois ela já é responsavel por atulizar os dados do usuario após o login.

Neste caso o processo de autenticação seria:

O método make profile é este: https://github.com/linea-it/lsp_daiquiri/blob/master/daiquiri/linea/shibboleth.py#L10

Para fazer essa implementação é necessário saber como fazer a consulta ao ldap do linea.
Penso em duas possiveis soluções:

  1. consulta direta ao ldap, via bibliteca (se não me engano já tem um ldap configurado no daiquiri)
  2. consulta via API ao commanger o gerenciador de usuarios do LIneA. (eu preferiria essa solução)

Por se tratar de questões de credenciais e login federado esse desenvolvimento deve ser feito no ambiente do linea. A forma mais pratica é copiar o arquivo que vai ser alterado para diretório /home/deployer/userquery-dev e montar esse arquivo no docker-compose para sobrescrever o arquivo original dentro do container. Isso vai permitir fazer as alterações em que seja necessário um build do container a cada teste. quando a solução estiver funcional as mudanças no arquivo devem ser levadas para o repositório e o arquivo removido do ambiente.

glaubervila commented 1 month ago

Related: #5