【发布时间】:2015-05-24 01:17:15
【问题描述】:
我目前正在为我的 Intranet asp.net 站点使用 Windows 身份验证。我希望我的网站的一部分仅对我指定的 Windows 用户组(管理员)中的用户可用,并授予访问权限。到目前为止,我的工作正常,IIS 中的 ASP.net 模拟设置为“经过身份验证的用户”。我还想将文件从网络位置下载到客户端计算机。我通过以下代码执行此操作:
Protected Sub Button1Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim path3 As String = "file path here"
Dim fi As New FileInfo(path3)
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ContentType = "application\msword"
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" & fi.Name)
HttpContext.Current.Response.WriteFile(fi.FullName)
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.Close()
End Sub
这也有效,但前提是我将 ASP.net 模拟从 Authenticated User 切换到特定用户。我已经检查过了,特定用户和经过身份验证的用户都可以访问文件路径。例如,我在 windows 帐户 JonW 下登录,该帐户是组 DOMAIN USERS 的一部分。我知道 DOMAIN USERS 可以访问我要下载的文件。
如果我不使用特定用户,那么当我单击按钮尝试下载文件时,会弹出一个 Windows 安全性并询问我的信息。当我输入信息时(我已经登录了,我不想这样做),它会等待 15 秒,然后再次询问。这会重复 5 次左右,直到它告诉我我无权访问(我知道我有)。
因此,显而易见的解决方案是使用特定的模拟帐户,对吗?不,因为当我尝试访问网站的管理员部分时,我无法访问,因为它使用的是特定的模拟用户,而不是属于管理员组的经过身份验证的用户。我可以让特定的模拟帐户访问网站的该部分,但是每个人都可以进入,这是我不想要的。
所以我的问题是如何使用特定的模拟用户来下载文件,以及如何使用经过身份验证的用户来访问管理部分,或者,我怎样才能一直使用经过身份验证的用户并摆脱弹出窗口安全性,并让它自动使用经过身份验证的用户凭据。
【问题讨论】:
标签: asp.net authentication visual-studio-2013 impersonation