Alguns meses atrás o Daniel fez um post demonstrando como colocar autenticação em shiny apps, baseado numa implementação do José Jesus Filho. Depois disso, trabalhamos bastante e conseguimos desenvolver o pacote auth0
, que foi apresentado na useR!2019.
Nesse post, darei uma ideia básica de como o pacote funciona, seus desafios atuais e próximos passos. Novamente, a melhor forma de utilizar o pacote é lendo a documentação completa, então aqui vou me ater a alguns detalhes.
Vídeo
Fiz um vídeo demonstrando a utilização do auth0 aqui:
O vídeo está bem simples e mostra os aspectos iniciais para configurar o Auth0 e fazer funcionar na plataforma shinyapps.io, da RStudio.
Dicas
Configuração com _auth0.yml
O arquivo yml
pode ser criado com auth0::use_auth0()
e começa assim:
name: myApp
shiny_config:
local_url: http://localhost:8100
remote_url: ''
auth0_config:
api_url: !expr paste0('https://', Sys.getenv('AUTH0_USER'), '.auth0.com')
credentials:
key: !expr Sys.getenv("AUTH0_KEY")
secret: !expr Sys.getenv("AUTH0_SECRET")
O ideal é que você use usethis::edit_r_environ()
para adicionar as variáveis de configuração AUTH0_USER
, AUTH0_KEY
e AUTH0_SECRET
, por questões de segurança.
Arrumando as informações no Auth0
Pelo que notei dos feedbacks da comunidade, a parte mais difícil de configurar o auth0
é colocar as URLs no aplicativo. Primeiro, lembre-se sempre de que você precisa colocar essas informações em três lugares:
- Allowed Callback URLs
- Allowed Web Origins
- Aqui, se a URL do seu app tiver algo depois do domínio e da porta, você deve tirar essas informações. Por exemplo,
https://rseis.shinyapps.io/auth0Example
virahttps://rseis.shinyapps.io somente
.
- Aqui, se a URL do seu app tiver algo depois do domínio e da porta, você deve tirar essas informações. Por exemplo,
- Logout URLs
É importante notar também que você precisa da URL completa, incluindo os https://
, tando no arquivo .yml
quanto na configuração do Auth0. Esse é o erro mais comum que notei nos aplicativos dos meus alunos.
Desafios
- Por enquanto o
auth0
não funciona no paradigmaui.R
/server.R
. Preciso de ajuda para fazer funcionar! O problema principal aqui é que talvez seja necessário alterar algumas coisas no ambiente ao carregar o pacote, e eu gostaria de fazer isso da maneira menos intrusiva possível. - Seria interessante implementar toda a extensa API do auth0 no R, para ficar mais fácil de setar as web origins e configurar usuários. Mas isso dá bastante trabalho e eu também aceito ajuda.
É isso. Happy coding ;)