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

Integrate Shibboleth with Daiquiri #15

Closed glaubervila closed 3 months ago

glaubervila commented 1 year ago

Importante Achei essa referencia a uma biblioteca que integra com protocoloc SAML: https://github.com/SAML-Toolkits/python3-saml/tree/master https://varun-sharma.medium.com/mastering-the-implementation-of-saml-2-0-authentication-in-django-91d381fd55e7 https://github.com/KristianOellegaard/django-saml-service-provider

### Tasks
- [x] integrate daiquiri with shibbolet
- [x] Configurar rota/botão de login apontando para Shibboleth (test/prod) e para admin (dev)
- [x] Instalar e configurar lib que permite acesso as variaveis de ambeinte nos templates Django.
- [x] Configurar um log especifico para Midleware Shibboleth
- [x] Corrigir/Contornar Incompatibilidade da lib django-shibboleth-remoteuser com Django 4.x
- [x] Alterar o repositório do lsp_daiquiri para funcionar como um app independente do Science Server (variaveis, configs, paths, etc)
- [x] Deploy ambiente de dev para o userquery/daiquiri na srvnode04

Reference: https://www.g-vo.org/edp-forum-2018/slides/asterics2018-daiquiri-galkin.pdf

glaubervila commented 7 months ago

@gschwend Está tarefa ficou bloqueada, hoje encontrei uma incompatibilidade que não me permite continuar por enquanto. Vai ser necessário separar o Daiquiri do Science Server. Por separar eu quero dizer que vai precisar ter uma URL independente, e uma configuração independente no SATOSA.

O problema é que um dos endpoints de autenticação é configurado para retornar com os dados do usuario de volta para a app que solicitou a requisição. Essa configuração ocorre em 2 lugares no satosa que tem fixo a url que solicita o login. E no container do shibboleth que possui um apache configurado para retonar a solicitação de volta para a aplicação.

Nos 2 casos são configurações NÃO dinamicas. tentei contornar colocando 2 container shibboleths no lado da aplicação mas não adiantou pq falhou no lado do Satosa.

Acredito que agora é conversar com @carlosadean para chegarmos a uma solução.

Abaixo deixo as 2 configs que citei:

Satosa: Arquivo: /home/deployer/satosa/config/metadata/scienceserver-dev.xml

    <md:Extensions>
      <init:RequestInitiator xmlns:init="urn:oasis:names:tc:SAML:profiles:SSO:request-init" Binding="urn:oasis:names:tc:SAML:profiles:SSO:request-init" Location="https://scienceserver-dev.linea.org.br/Shibboleth.sso/Login"/>
    </md:Extensions>

Pelo que eu entendi o Satosa tem fixo a url que ele espera que faça a requisição: Location="https://scienceserver-dev.linea.org.br/Shibboleth.sso/Login"

E no container gidlab (Shibboleth com Apache) Tem uma rota Shibboleth.sso que redireciona para o container do backend da aplicação.

<VirtualHost *:80>
    ServerName https://scienceserver-dev.linea.org.br:443
    UseCanonicalName On

  ProxyPassMatch /Shibboleth.sso !

  ProxyPass / uwsgi://lsp_daiquiri:8000/`
carlosadean commented 7 months ago

Essas configurações envolvendo o módulo shibboleth do apache são um pouco sensíveis, pois é necessário estabelecer a relação de confiança entre o SP, no caso o daiquiri ou o scienceServer, com o IdP, representado nesse caso pelo satosa. Sem isso, a autenticação não vai funcionar.

carlosadean commented 7 months ago

De qualquer modo, me parece que a escolha por separar as aplicações é a correta e vai de encontro ao que já havíamos definido, que o Daiquiri deve estar fora do guarda-chuvas do ScienceServer como uma aplicação independente @glaubervila

gschwend commented 7 months ago

@glaubervila @carlosadean pedido para novo CNAME no ticket #14253.

glaubervila commented 7 months ago

@carlosadean Deixei pronto o ambiente do userquery, coloquei o container do shibboleth e configurei as rotas que eu sabia. e copiei a pasta com as configs do science server.

carlosadean commented 7 months ago

A url https://userquery-dev.linea.org.br já está no ar e a porta interna a ser usada é a 8096.

glaubervila commented 7 months ago

A url https://userquery-dev.linea.org.br já está no ar e a porta interna a ser usada é a 8096.

@carlosadean Agora falta a parte do SAML/Shibboleth, eu apenas copiei toda a pasta do shibboleth do science server. Eu não conheço os arquivos de configuração, imagino que vc precise criar novas chaves e fazer a relação entre o shibboleth e o satosa.

carlosadean commented 4 months ago

@glaubervila concluímos a configuração do shibboleth entre o userquery e o satosa, no entanto, notamos duas coisas:

  1. o link no botão de login precisa ser corrigido com a remoção da barra no final em ...proxy/
  2. após logar, a aplicação reclama de autorização, então entendemos que falta alguma etapa interna na aplicação.