我有一个客户端/服务器项目,与WCF进行通信(现在是命名管道,但可以改变 - 但我不能使用IIS)。该项目与Active Directory集成。
此程序旨在通过充当一种代理,为用户提供通常没有权限的权限。用户使用客户端“请求”要执行的任务。然后,只要满足某些条件,服务器就会为客户端执行任务。
其中一个标准是允许用户请求此任务。我需要一种方法让我的WCF服务保证用户的身份,将其与数据库进行比较,然后执行任务或拒绝任务。
我如何使用Windows身份验证来保证100%用户是他们所说的人?
提前致谢,
麦克
答案 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。