【问题标题】:R Shiny - WebSEAL authentication for R Shiny Server Open SourceR Shiny - R Shiny 服务器开源的 WebSEAL 认证
【发布时间】:2018-07-17 00:51:50
【问题描述】:

据我了解,Shiny Server 的开源版本不支持认证。

我们的环境使用 WebSEAL 代理服务来验证用户并将他们的访问权引导到 Web 应用程序。

我们希望向经过身份验证的用户公开 Shinyapp,其提供的内容取决于用户组成员身份。 WebSEAL 能够在 HTTP 标头中设置 iv_user 和 iv_group 变量以通过联结传递到 shinyapp,但开源 Shiny 服务器似乎无法访问它们(IE 通过 session$clientData 对象)。

我想知道是否有人为开源 Shiny Server 应用找到了一种访问 HTTP 标头以确定用户和组的方法。

【问题讨论】:

    标签: shiny webseal


    【解决方案1】:

    如果您只想访问 HTTP 标头,则 UI 可以是一个函数,该函数接受实现 Rook specification 的请求对象的单个参数。

    library(shiny)
    
    ui <- function(request) {
      print(as.list(request))
      # get HTTP headers like request$HTTP_HEADER_NAME (all caps)
    
      fluidPage(
        tags$pre(
          paste(capture.output(as.list(request)), collapse = "\n")
        )
      )
    }
    
    server <- function(input, output) {
    }
    
    shinyApp(ui, server)
    

    根据 HTTP 标头提供不同页面的一种方法可能是这样 -

    unauthorizedPage <- function() {
      "Unauthorized"
    }
    
    memberPage <- function() {
      fluidPage(
        "Member page"
      )
    }
    
    ui <- function(request) {
      # serve memberPage() if request contains header `iv_group: member`
      # otherwise serve unauthorizedPage()
      if (!identical(request$HTTP_IV_GROUP, "member"))
        return(unauthorizedPage())
    
      memberPage()
    }
    
    server <- function(input, output) {
    }
    
    shinyApp(ui, server)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2018-03-12
      • 2018-02-02
      • 2020-05-01
      • 2017-04-29
      • 2023-03-13
      • 2018-10-19
      相关资源
      最近更新 更多