Esta viñeta proporciona un tutorial paso a paso sobre cómo asegurar una aplicación Shiny utilizando la autenticación de Google a través del paquete R tapLock. tapLock simplifica la integración de OpenID Connect y OAuth 2.0 en aplicaciones Shiny, asegurando una robusta seguridad con un esfuerzo mínimo de codificación.
Antes de proceder, asegúrate de tener lo siguiente: - Un conocimiento básico de R y Shiny. - Una aplicación Shiny lista para ser desplegada. - Acceso a Google Developer Console para las credenciales OAuth. - (Opcional) Un servidor con HTTPS habilitado.
Instala tapLock desde GitHub usando el paquete pak
:
Authorized JavaScript origins
en la URL de
tu aplicación Shiny.Authorized redirect URIs
en la URL de tu aplicación Shiny con el sufijo /login
.client_id
y el
client_secret
.Carga tapLock y configura la autenticación:
library(taplock)
auth_config <- new_openid_config(
provider = "google",
client_id = Sys.getenv("GOOGLE_CLIENT_ID"),
client_secret = Sys.getenv("GOOGLE_CLIENT_SECRET"),
app_url = Sys.getenv("SHINY_APP_URL")
)
Reemplaza GOOGLE_CLIENT_ID
,
GOOGLE_CLIENT_SECRET
, y SHINY_APP_URL
con tus
credenciales reales y la URL de tu aplicación en tus variables de
entorno.
Modifica tu aplicación Shiny para usar
sso_shiny_app
:
library(shiny)
library(tapLock)
# Configuración de autenticación
auth_config <- new_openid_config(
provider = "google",
client_id = Sys.getenv("GOOGLE_CLIENT_ID"),
client_secret = Sys.getenv("GOOGLE_CLIENT_SECRET"),
app_url = Sys.getenv("SHINY_APP_URL")
)
# UI
ui <- fluidPage(
tags$h1("Bienvenido a la Aplicación Shiny Segura"),
textOutput("userInfo")
)
# Server
server <- function(input, output, session) {
output$userInfo <- renderText({
user_email <- get_token_field(token(), "email")
glue::glue("Conectado como: {user_email}")
})
}
# Asegurar aplicación Shiny con tapLock
sso_shiny_app(auth_config, ui, server)
Despliega tu aplicación Shiny como lo harías normalmente. El paquete tapLock maneja el proceso de autenticación. Recomendamos desplegar tu aplicación con una solución como Shiny Server (Open Source o Pro) o con faucet. Soluciones como Posit Connect ya incluyen autenticación y no requieren tapLock.
Siguiendo estos pasos, has asegurado con éxito tu aplicación Shiny con autenticación de Google utilizando tapLock. Esto asegura que solo los usuarios autenticados puedan acceder a tu aplicación, mejorando su seguridad y privacidad.