Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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
C# Windows身份验证、自定义权限、WCF、Active Directory_C#_Wcf_Active Directory_Windows Authentication - Fatal编程技术网

C# Windows身份验证、自定义权限、WCF、Active Directory

C# Windows身份验证、自定义权限、WCF、Active Directory,c#,wcf,active-directory,windows-authentication,C#,Wcf,Active Directory,Windows Authentication,我有一个客户机/服务器项目,目前正在与WCF命名管道通信,但这可能会改变,但我不能使用IIS。此项目与Active Directory集成 该程序旨在通过代理的方式为用户提供通常没有权限的权限。用户使用客户端请求要执行的任务。然后,只要满足某些条件,服务器就为客户机执行任务 其中一个标准是允许用户请求此任务。我需要为我的WCF服务提供一种方法来保证用户的身份,将其与数据库进行比较,或者执行任务,或者拒绝任务 我如何使用Windows身份验证来100%保证用户是他们所说的人 提前感谢, Mike命

我有一个客户机/服务器项目,目前正在与WCF命名管道通信,但这可能会改变,但我不能使用IIS。此项目与Active Directory集成

该程序旨在通过代理的方式为用户提供通常没有权限的权限。用户使用客户端请求要执行的任务。然后,只要满足某些条件,服务器就为客户机执行任务

其中一个标准是允许用户请求此任务。我需要为我的WCF服务提供一种方法来保证用户的身份,将其与数据库进行比较,或者执行任务,或者拒绝任务

我如何使用Windows身份验证来100%保证用户是他们所说的人

提前感谢,

Mike

命名管道的身份验证是Windows身份验证,向下滚动到netNamedPipeBinding。你可以这样做,例如

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public string GetData(int value)
{
  return string.Format("Hi, {0}, you have entered: {1}",
                           WindowsIdentity.GetCurrent().Name, value);
}
一旦您拥有了该身份,您就知道Windows已正确验证了该用户,您可以根据数据库中的身份检查该身份。

您可以在中创建自定义身份并对用户数据库实施验证


请参阅。

是否需要模拟代码?实际上,我需要以与请求的用户完全不同的用户身份执行任务。在继续之前,只需要根据我的数据库检查他们的凭据。这样做可以吗?您只需要模拟来获取调用方的身份。如果您在没有模拟的情况下获得当前Windows标识,则将获得运行服务的帐户的标识。您只需要检查、获取名称并从方法返回名称。您不必在模拟调用者的方法中进行工作,事实上,这是您不想做的。