R Shiny 应用程序中的安全性

2024-02-13

我想发布一个 R Shiny Web 应用程序(http://www.rstudio.com/shiny/ http://www.rstudio.com/shiny/)在网络上,但我想用密码保护它,以便只有拥有凭据的人才能查看我发布的内容。做这个的最好方式是什么 ?


这可能有点晚了,但无论如何我都会回答。如果您已经有了解决方案,可以与我们分享吗?

我的主要目标非常简单。我的笔记本电脑上有一个闪亮应用程序的工作版本。我曾经按照下面提到的方式运行它,一直在本地进行测试。

R -e "shiny::runApp('.')"

然后到了我们必须将其放在 Amazon EC2 实例上的时刻。

起初,我的尝试是直接将 apache 代理到我的应用程序将侦听的端口 8100。但这并没有那么有效,因为看起来以这种方式运行服务器实际上使用原始套接字,而使用闪亮服务器则回落到使用 sock.js,因此现在通信是通过 HTTP 进行的。

因此,按照此处的说明在我们的 EC2 实例上下载闪亮服务器应用程序:https://github.com/rstudio/shiny-server https://github.com/rstudio/shiny-server

顺便说一句,虽然那里的说明建议您在使用 RHEL 实例时从源代码安装 node.js,但通过 yum 安装方式,它对我来说效果很好。这里有这些说明。 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager#rhelcentosscientific-linux-6

在node.js、shiny-server安装和设置之后,编辑了我的Apacheconf(Ubuntu和RHEL以不同的方式调用conf。因此编辑您拥有的conf)。添加了虚拟主机来满足我的请求。正如您所注意到的,还使用带有 Apache Location 指令的 Apache Basic 摘要身份验证来屏蔽它。

<VirtualHost *:80>

    ProxyPass / http://localhost:3838/
    ProxyPassReverse / http://localhost:3838/
    ProxyPreserveHost On

    <Location />
        AuthType Basic
        AuthName "Restricted Access - Authenticate"
        AuthUserFile /etc/httpd/htpasswd.users
        Require valid-user
    </Location>

</VirtualHost>

除此之外,还编辑了shiny-serverconf以仅侦听来自127.0.0.1的请求(仅本地主机)。所以在我的闪亮服务器中我有以下内容:

listen 3838 127.0.0.1;

顺便说一句,如果您位于 Amazon EC2 环境中,则不需要此操作,因为您可以使用 EC2 仪表板中的安全组设置来执行相同的操作。无论如何,我这样做是一个很好的措施。

目前,这已经足够了,因为我们正在寻找非常快速且简单的东西。

现在,迫切等待令人敬畏的 RShiny 人员提供身份验证作为企业版交易的一部分。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R Shiny 应用程序中的安全性 的相关文章

随机推荐