【问题标题】:.NET C# Pass IIS app pool credentials as basic authentication Credentials to HTTPRequest.NET C# 将 IIS 应用程序池凭据作为基本身份验证凭据传递给 HTTPRequest
【发布时间】:2018-06-19 11:03:24
【问题描述】:

我需要将 IIS 应用程序池凭据作为网络凭据传递给 .NET 应用程序中的 WebAPI 调用。

var request = (HttpWebRequest)WebRequest.Create("WEB API URL");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Credentials = new NetworkCredential("USERNAME","PASSWORD","DOMAIN");

这很好用。

我的问题是,我需要将 IIS 应用程序池凭据作为 NetworkCredential 对象传递,而不是传递硬编码凭据。

我检查了下面的代码,但对我不起作用。

WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
using (identity.Impersonate())
{
    var request = (HttpWebRequest)WebRequest.Create("WEB API URL");
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.Credentials = CredentialCache.DefaultNetworkCredentials;
}

【问题讨论】:

  • 不要在这种情况下使用基本身份验证。如果您想作为 Windows 帐户(池帐户是)进行调用,请确保服务接受 Windows 身份验证。 IIS 应用程序池用户帐户是特殊的本地 帐户,但对域中的其他计算机不可见。如果您想从另一个使用域帐户调用一项服务
  • 你能指导我如何将APP POOL用户凭据传递给WEB API吗?

标签: c# .net security


【解决方案1】:

我能想到的只有 2 个选项。

将您的身份验证类型更改为 Windows 身份验证

您通常可以通过您的项目来改变这一点。当您创建一个新项目时,它甚至会询问您是否要通过 Windows 身份验证对用户进行身份验证。

与 Active Directory 链接

一些组织/公司将使用 Active Directory 来管理他们的用户。这使您可以登录办公室中的特定机器,或将您限制在单个工作站,或让 IT 管理员在您忘记密码时重置您的密码等。这是一个了不起的工具,但使用起来很痛苦。我建议使用使用虚拟机的虚拟化网络来完成此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多