我如何通过 .net 远程调用模拟经过 Windows 身份验证的 Web 用户?

Posted

技术标签:

【中文标题】我如何通过 .net 远程调用模拟经过 Windows 身份验证的 Web 用户?【英文标题】:how do i impersonate a windows authenticated web user over a .net remoting call? 【发布时间】:2009-03-23 20:34:03 【问题描述】:

我有一个使用 Windows 集成安全性的 Web 应用程序。我还有一个作为本地系统运行的 Windows 服务。 Web 应用程序使用 .NET 远程处理通过 tcpip 通道在服务上执行方法。有没有办法在 .NET 2.0 上将 Windows 身份传递给服务?

【问题讨论】:

【参考方案1】:

根据 MSDN 文档,配置客户端和服务器 app.config 文件。

服务器:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <channels>
              <channel ref="tcp" secure="true" impersonate="true" />
             </channels>
        </application>
    </system.runtime.remoting>
</configuration>

客户:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <channels>
              <channel ref="tcp" secure="true" tokenImpersonationLevel="impersonation"/>
             </channels>
        </application>
    </system.runtime.remoting>
</configuration>

请注意,该属性对于服务器称为 impersonate 而对于客户端称为 tokenImpersonationLevel。

见:http://msdn.microsoft.com/en-us/library/59hafwyt(VS.85).aspx

【讨论】:

我找到了相同的文档。但是,我仍然无法让通信从客户端工作到服务器。由于时间限制,实施了一个不太优雅的解决方案,我们直接将组(角色)传递给服务。

以上是关于我如何通过 .net 远程调用模拟经过 Windows 身份验证的 Web 用户?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Windows 身份验证模拟

C# 通过模拟http请求来调用soapwsdl

使用 ASP.NET 模拟读取远程文件

使用经过身份验证的用户凭据从 asp.net 启动控制台应用程序

我如何使用模拟功能通过UNC在远程计算机上操纵文件/目录?

如何使用 Spring 在单元测试中模拟远程 REST API?