Windows身份验证,自定义权限,WCF,Active Directory

时间:2009-07-23 00:49:41

标签: c# wcf active-directory windows-authentication

我有一个客户端/服务器项目,与WCF进行通信(现在是命名管道,但可以改变 - 但我不能使用IIS)。该项目与Active Directory集成。

此程序旨在通过充当一种代理,为用户提供通常没有权限的权限。用户使用客户端“请求”要执行的任务。然后,只要满足某些条件,服务器就会为客户端执行任务。

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

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

提前致谢,

麦克

2 个答案:

答案 0 :(得分:0)

命名管道的only allowed type of authentication是Windows身份验证(向下滚动到netNamedPipeBinding)。您可以执行impersonation declareatively例如......

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public string GetData(int value)
{
  return string.Format("Hi, {0}, you have entered: {1}",
                           WindowsIdentity.GetCurrent().Name, value);
}

拥有该身份后,您就知道Windows已对此用户进行了正确的身份验证,您可以根据数据库中的内容检查该身份。

答案 1 :(得分:0)

您可以创建自定义ServiceAuthorizationManager并在CheckAccessCore中针对您的用户数据库实施验证。

请参阅How to: Create a Custom Authorization Manager for a Service