页面需要HTTP; ASP.NET授权需要HTTPS

时间:2016-05-19 02:36:50

标签: asp.net

在Azure上托管的ASP.NET网站上,我需要保护页面,以便只有特定用户才能访问它。由于页面中使用了javascript库,它只有在通过HTTP提供时才能正常工作,但除非通过HTTPS提供页面,否则ASP.NET身份验证将不允许访问。

为了限制对安全页面的访问,我将Web.config文件添加到包含页面的文件夹中:

 <configuration>
   <system.web>
     <authorization>
       <allow roles="Admin" />
       <allow roles="Map Viewer" />
       <deny users="*" />
     </authorization>
   </system.web>
 </configuration>

主web.config文件设置表单身份验证。

<authentication mode="Forms">
  <forms loginUrl="~/account/login/"
         requireSSL="true"
         timeout="2880" />
</authentication>

如果您通过https访问受保护的页面(例如https://example.com/Map),这就像魅力一样。系统会提示您登录,输入凭据,然后转到该页面。如上所述,如果通过http提供,页面将无法正常工作。但是,ASP.NET身份验证/授权不允许您访问它: 1.如果您未登录并尝试通过http访问该页面,则在您登录后会重定向到站点主页。 2.如果您已登录并尝试通过http访问该页面,即使您已经登录,也会显示登录屏幕。

网站上没有其他安全页面要求HTTP正常工作,这种基于表单的身份验证过程多年来一直适用于这些页面。

1 个答案:

答案 0 :(得分:0)

requireSSL属性设置为false,或将其删除(如果未指定值,则requireSSL为false)。如果requireSSL设置为true,则服务器将不接受身份验证cookie,除非它们通过HTTPS连接发送到服务器。删除此属性后,服务器将接受来自HTTP和HTTPS的身份验证cookie。