如何将EC2托管的Shiny应用程序安全地集成到asp.net项目中

时间:2018-07-09 07:11:36

标签: asp.net amazon-web-services amazon-ec2 shiny shiny-server

我有两个申请。

  1. EC 2上托管的R Shiny应用
  2. Asp.net应用程序托管在Azure上。

asp.net应用程序执行用户身份验证,并用于组织整个数据科学管道。用户提供数据,数据科学家转换数据并交付闪亮的应用程序。最后,用户在asp.net应用程序中打开Shiny应用程序。

我遇到的问题是,我不知道如何安全地集成在asp.net应用程序中开发的Shiny应用程序。

我可以解决这样的问题:

enter image description here

基本上,我可以创建一个简单的iframe,并带有指向EC2实例的公共域的链接。但是,这是不安全的。任何人都可以通过简单的页面源代码单击来查找和访问URL。

我考虑过的另一个选择是限制EC2安全组中的IP地址。但是,问题在于,asp.net应用程序应该由不同的实体/独立用户使用。因此,安全性需要比服务器IP地址更精细(用户是否可以访问应用程序,应用程序内的项目,项目内的容器?)。

此外,我还考虑过在实际的Shiny应用程序中提供第二级身份验证,但是,这本质上首先失去了asp.net身份验证的意义。

任何想法或暗示我应该继续研究的方向?

1 个答案:

答案 0 :(得分:2)

我认为您是对的,有两种选择。首先是在两台服务器之间建立安全连接,并使用.Net应用程序代理流量,但这没有意义。

第二个是对两个服务器的使用进行身份验证。您可以通过让.Net服务器以某种方式将有关活动会话的数据传递给Shiny应用程序以使其同步来完成此操作,但这并不理想。

您可以改用JWT之类的身份验证机制,在该机制中,.Net服务器将在登录时向客户端颁发令牌(即cookie或嵌入到iFrame URL中),然后客户端将其传递给令牌传递给Shiny服务器,服务器只需验证令牌即可。如果使用Cookie,则需要确保两个服务器都在同一个子域中,以便正确设置令牌。

相关问题