Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET中的转发身份验证_C#_Asp.net_Authentication - Fatal编程技术网

C# ASP.NET中的转发身份验证

C# ASP.NET中的转发身份验证,c#,asp.net,authentication,C#,Asp.net,Authentication,在我的ASP.NET应用程序中,我使用WebClient下载文件。此文件几乎总是在公司内部网上,需要访问权限。每当我在VS中运行应用程序时,它都可以正常工作,因为它是在我自己权限的上下文中运行的。但是,当它部署到IIS时,它会在“网络服务”权限的上下文中运行,当涉及到intranet时,这些权限基本上是不存在的(正如您所期望的) 我可以在这里看到一些糟糕的解决方案: 为应用程序专门创建一个帐户,其详细信息将位于web.config中,并以字符串形式提供给WebClient。这是次优的,因为并非

在我的ASP.NET应用程序中,我使用WebClient下载文件。此文件几乎总是在公司内部网上,需要访问权限。每当我在VS中运行应用程序时,它都可以正常工作,因为它是在我自己权限的上下文中运行的。但是,当它部署到IIS时,它会在“网络服务”权限的上下文中运行,当涉及到intranet时,这些权限基本上是不存在的(正如您所期望的)

我可以在这里看到一些糟糕的解决方案:

  • 为应用程序专门创建一个帐户,其详细信息将位于web.config中,并以字符串形式提供给WebClient。这是次优的,因为并非服务的所有用户都具有相同的权限
  • 需要输入用户名和密码。这将永远不会被批准,因为公司尽可能使用证书。密码用于登录到Windows,并且几乎所有超过该点的内容都在Kerberos的帮助下使用Windows身份验证

最佳解决方案是将访问(并通过Kerberos提供Windows身份验证数据)的当前用户的凭据直接传递给WebClient对象。这可能吗?如果是,如何?如果有人能告诉我,或者至少让我摆脱痛苦,告诉我这件事做不到,我将不胜感激。

模拟被证明是最佳解决方案;谢谢你,JT

关于将Windows身份验证与模拟绑定,有很多很好的资源。一个我没有实际使用,但后来发现的,看起来非常全面的,可以在这里找到:

在我的案例中也需要授权,这家伙解释得相当好,并链接到一个有用的msdn文档:


这是什么类型的文件。。是不是里面有敏感数据。。如果不是,那么我不明白您为什么需要使用身份验证。。您是否使用类似SharePoint的东西?我将此作为一条评论添加,因为我已经使用ASP.NET一段时间了,我相信其他积极使用它的人可以提供更好的见解。也就是说,如果我没记错的话,您希望启用模拟。应该使用发出请求的用户的凭据运行web应用程序。我不知道如何使用WebClient实现这一点,因为使用HTTP的一切都将变得更加透明,即在Cookie/Header中发送文本以进行身份验证。但是,WCF更适合windows intranet场景,除了许多其他模拟选项之外,您还可以从属性轻松访问windows标识。我并不是说用WCF重写整个过程,但我认为它非常适合这个特定场景。DJ-它有大量的敏感数据,是高级管理人员的专属。是的,使用了Sharepoint,但由于许多其他原因,无法在Sharepoint服务器上运行。主要是因为这不会专门在内部网上使用。JT-非常感谢你让我这么做。不得不做一些调整,但效果不错。暴君——我再也不爱了。事实上,这最初将作为Windows8平板电脑应用程序运行,但董事会几乎完全使用iPad,因此网络应用程序是新计划。。。不幸的是:(