Esse projeto permite a autenticação OAuth2 do SUAP para projetos Django que usem a biblioteca django-allauth.
- Instale e configure o Django Allauth conforme a documentação
- Instale o pacote
django-allauth-suap:
pip install django-allauth-suap
- Adicione ao
INSTALLED_APPS:
INSTALLED_APPS = [
...
# Padrão do allauth
allauth
allauth.account
allauth.socialaccount
# SUAP Provider
allauth_suap
...
]- Não esqueça das demais configurações do
allauthemAUTHENTICATION_BACKENDS,MIDDLEWAREeurls.py. - Gere as chaves de API do SUAP em https://suap.ifrn.edu.br/admin/api/aplicacaooauth2/ com as seguintes informações:
Name: Nome do App
Authorization grant type: Authorization code
# Em desenvolvimento usar o exemplo abaixo e em produção ajustar o domínio, porta e protocolo (HTTPS), mantendo o endpoint.
Redirect URIs:
http://127.0.0.1:8000/accounts/suap/login/callback/
Client type: Confidential # Já que as chaves ficam seguras no back-end.
Algorithm: No OIDC support
Ativo: check
- Guarde o
Client secretpois não será mostrado novamente; - Adicione ao
settings.pydo projeto:
SOCIALACCOUNT_PROVIDERS = {
"suap": {
# Talvez funcione para outras instituições apenas
# mudando a URL, mas só foi testado no IFRN.
"SUAP_URL": "https://suap.ifrn.br",
# Escopo básico. Para acessar dados como CPF, adicione
# "documentos_pessoais".
"SCOPE": ["identificacao", "email"]
"APP": {
# IMPORTANTE! Use algum mecanismo para ler esses valores
# de um .env, por exemplo.
# Não suba suas chaves para o repositório!!
"client_id": "seu_client_id",
"secret": "seu_client_secret",
},
}
}- O Provider apenas recupera as informações básicas do usuário padrão Django:
username(matrícula),email,first_nameelast_name. - Caso seja necessário recuperar mais dados (ex. cpf, campus), crie um SocialAcountAdapter customizado e use os métodos disponíveis, conforme a documentação do allauth.
- O projeto Paca CMS usa esse pacote.
O projeto está aberto a contribuições, inclusive para adequações que permitam o funcionamento com outras instituições que usem o SUAP.