Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Silverlight WCF服务模拟一个用户但仍然是用户Windows身份验证?_Silverlight_Wcf_Iis_Wcf Security - Fatal编程技术网

Silverlight WCF服务模拟一个用户但仍然是用户Windows身份验证?

Silverlight WCF服务模拟一个用户但仍然是用户Windows身份验证?,silverlight,wcf,iis,wcf-security,Silverlight,Wcf,Iis,Wcf Security,我正在使用LinqToEntitiesDomainService连接到SQL Server数据库。这需要Windows身份验证,我已经在工作了 我编写了一个web服务,它使用Activator.CreateInstance(…)在服务器上运行一个可执行文件。我希望这也能使用Windows身份验证。但是,我需要该服务具有运行可执行文件的适当权限 当我现在运行该服务时,它工作正常。我的帐户具有适当的角色进行身份验证。我在服务器上也有上帝般的权限,这允许我使用Activator.CreateInsta

我正在使用
LinqToEntitiesDomainService
连接到SQL Server数据库。这需要Windows身份验证,我已经在工作了

我编写了一个web服务,它使用
Activator.CreateInstance(…)
在服务器上运行一个可执行文件。我希望这也能使用Windows身份验证。但是,我需要该服务具有运行可执行文件的适当权限

当我现在运行该服务时,它工作正常。我的帐户具有适当的角色进行身份验证。我在服务器上也有上帝般的权限,这允许我使用
Activator.CreateInstance(…)
命令

虽然具有适当角色的其他用户可以进行身份验证,但他们的帐户在服务器上没有权限,也不应该有权限

是否有一些(最好是简单的)方法可以作为一个用户运行服务,但所有的身份验证都是通过windows身份验证完成的?如果我能在一个应用程序池中完成这一切也是最好的


谢谢大家!

是的,你可以,看看这个。这显示了一些模拟用户的技术

using (WindowsImpersonationContext impersonationContext =
                                 ((WindowsIdentity)User.Identity).Impersonate())
{
    // do something as current user
}
或者在WCF中,您也可以对其进行去极化定义

public class HelloService : IHelloService
{
    [OperationBehavior(Impersonation = ImpersonationOption.Required)]
    public string Hello(string message)
    {
        return "hello";
    }
}
注意,这两种技术模拟客户端(调用者)

要显式模拟另一个用户,您需要一些p/Invoke。有一个很好的方法可以把一切都整理得很整齐。然后,您可以执行以下操作:

using (new Impersonator("myUsername", "myDomainname", "myPassword"))
{
   // do something as myUsername
}