【问题标题】:Setting credentials for img basic authentication为 img 基本身份验证设置凭据
【发布时间】:2011-11-12 12:02:26
【问题描述】:

我正在 VS2010 中开发一个内部 .Net 应用程序,以便在我公司的 Intranet 中进行部署。该站点使用 Windows 身份验证,以便用户在成功通过域身份验证时不必登录。对于一页,我需要从 Intranet 获取一些信息,包括照片和其他信息。对于员工照片,我使用的是控件:

<asp:Image ID="imgPhoto" Style="display: inline-block" runat="server" CssClass="EmployeePhoto"
                alt="Photo not available" />

从后端,这允许我通过更改照片网址来根据用户选择更改显示的照片,如下所示:

imgPhoto.ImageUrl = string.Format("http://{0}/{1}.jpg", MySitePath, employeePhotoPath);

但是路径是受密码保护的。有什么方法可以显式提供用于访问 asp:image 的凭据,这样我就可以传入当前经过身份验证的用户的凭据,而不会提示用户进行身份验证?

更新

以前有一种方法可以将用户名+密码指定到img标签中,例如:

<img src="http://username:password@server/photos/1.jpg"> 

或类似的东西。以便凭据可用于访问目录?现在有可能吗?

【问题讨论】:

  • 您使用的是哪个版本的 IIS?这一点很重要。此外,您在这里遇到了三个不同的问题。第一个关于firefox是可以解决的;但是,关于仅使用匿名的第二个问题有点隐藏在您的问题中。第三,关于第三方,它不够复杂,无法传递用户名和密码。好吧,它提出了一个问题,即您为什么要尝试走 NTLM 路径。
  • 我正在使用在 Windows 2003 服务器上运行的 IIS V6.0。我们使用的 PDF 服务只是转到我们提供的 URL,加载页面并将其导出为 PDF。我无法将用户名/密码传递给服务,所以我真的想找到一种方法来以编程方式(我知道的不是一个词)设置用于从 Intranet 获取照片的用户名和密码。我仅将 Firefox 问题用于该问题的更具体示例。我的“匿名”页面设置为使用 Windows 域用户帐户进行身份验证,并具有访问内网照片的权限。我怎么能不使用 NTLM?

标签: .net authentication iis-6 image ntlm


【解决方案1】:

【讨论】:

  • 这很有帮助,但只适用于我的机器。我需要为需要使用该应用程序的每个人提供解决方案。此外,这也不能解决外部服务无法访问内网资源的问题。感谢您的建议
【解决方案2】:

我最终使用 WebClient 类来设置凭据以向另一台服务器进行身份验证,然后在本地下载照片:

                WebClient myWC = new WebClient();                    
                myWC.Credentials = new System.Net.NetworkCredential(bioSearchUsername, bioSearchPassword);
                string photoPath = Server.MapPath("~/images/Employees/" + employee + ".jpg");
                myWC.DownloadFile(imageLocation, photoPath);

之后,我在服务器上引用了照片的本地副本:

imgPhoto.ImageUrl = photoPath;

这解决了我在使用图像时遇到的身份验证问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    相关资源
    最近更新 更多