将Windows凭据从Web应用程序转发到Web服务

时间:2016-10-18 15:53:17

标签: c# .net security authentication credentials

Hello其他程序员!我需要你帮助解决我似乎无法解决的问题。我有一个使用IIS托管在虚拟机(VM 2)上的REST Web服务,当直接调用时,一切正常。我得到了所有需要的数据,每个人都很开心。 请注意,此Web服务需要Windows凭据才能运行。

现在,此Web服务也将由使用IIS的另一个虚拟机(VM 1)上托管的大型Web应用程序使用。这里出现了问题,当使用这个Web应用程序时,每当我想访问在后端发送Web服务的页面时,我都会收到一个即时错误401:无法获取用户配置文件(未授权未授权)

情况架构:

enter image description here

我用Google搜索了很多不同的东西。我试图冒充电话但没有成功。

以下是如何构建Web应用程序的请求:

public UserProfile GetProfile()
    {
        var wi = (WindowsIdentity)HttpContext.Current.User.Identity;
        var wic = wi.Impersonate();

        try
        {
            var request = new RestRequest("profile")
                              {
                                  Method = Method.GET,
                                  JsonSerializer = RestJsonSerializer.Default,
                                  UseDefaultCredentials = true,
                              };

            var response = this.client.Execute(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception(
                    $"Could not get the user profile ({response.StatusCode} {response.StatusDescription})");
            }

            return RestJsonSerializer.Default.Deserialize<UserProfile>(response);
        }
        finally
        {
            wic.Undo();
        }
    }

Web服务和Web应用程序的IIS设置为:

  • 匿名身份验证=已停用
  • ASP.NET Impersonation =已启用
  • 表单身份验证=已禁用
  • Windows身份验证=已启用

非常感谢任何帮助或提示:)

0 个答案:

没有答案