(Español) Asegurando Shiny con Google Auth
Source:vignettes/es_asegura_shiny_con_google.Rmd
es_asegura_shiny_con_google.Rmd
Introducción
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.
Prerrequisitos
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.
Paso 1: Instalar tapLock
Instala tapLock desde GitHub usando el paquete pak
:
install.packages("tapLock")
Paso 2: Crear Credenciales OAuth de Google
- Ve a Google Developer Console.
- Crea un nuevo proyecto o selecciona uno existente.
- Navega a ‘Credenciales’ y crea credenciales ‘OAuth client ID’.
- Establece los
Authorized JavaScript origins
en la URL de tu aplicación Shiny. - Establece los
Authorized redirect URIs
en la URL de tu aplicación Shiny con el sufijo/login
. - Anota el
client_id
y elclient_secret
.
Paso 3: Configurar Autenticación en R
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.
Paso 4: Modificar Aplicación Shiny
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)
Paso 5: Desplegar la Aplicación
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.