2012-12-30 15 views
1

我是新来的wcf,所以一个问题像wcf和用户认证一样困扰我。一般在asp.net我发送用户名和密码,并在服务器端它是针对数据库验证,如果用户是有效的,然后我存储一些数据在会话中,并在每一页我检查会话,如果会话存在和真存储为该用户在该会话中,然后我让页面执行,否则我重定向用户登录页面。所以我想知道如何在wcf中实现这种用户认证。我希望当第一次用户将调用我的服务的任何方法,然后他将通过凭证,如果凭证是好的,那么他可以调用我的服务的任何方法。请指导我如何在wcf中做到这一点。在wcf如何我可以存储会话中的每个用户将调用我的服务的任何数据....是否有任何方法?如何确定用户在WCF服务认证

我搜索谷歌和发现一个像http://blog.adnanmasood.com/2010/04/29/step-by-step-guide-for-authenticating-wcf-service-with-username-and-password-over-ssl/

但有人在这里通知主叫通用户名密码&但代码看起来象用户名和密码来两次一样

private static void Main(string[] args) 
{ 
    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
     delegate { return true; }); 

    var client = new WcfServiceClient(); 
    GetCredentials(); 
    client.ClientCredentials.UserName.UserName = username; 
    client.ClientCredentials.UserName.Password = password; 
    Console.Write(client.GetData(1)); 
    client.Close(); 
    Console.Read(); 
} 

...但为什么是两个用户名和密码即将到来UserName.UserName它看起来非常难看。 给我最好的想法,当他们第一次打电话给我的服务时,如何验证用户对数据库的身份验证,并且一旦从下次他可以调用我的服务的任何方法而无需提供凭据进行验证。

有人告诉我开发服务进行身份验证user.once用户身份验证然后服务将提供一些独特的令牌ID给每个wcf客户端和客户端将调用任何方法时将该令牌作为消息头传递......我不知道如何实现它,甚至我不知道它是否是最好的。所以寻找指导和建议。感谢

回答

1

处理WCF身份验证的最常用的方法是让客户端程序要求输入用户名和密码一次(或从配置文件检索),并让客户端程序的每个服务呼叫提供。一些示例可在http://msdn.microsoft.com/en-us/library/ff405740.aspx找到。

另一种方法是让用户会话,这通常是一个坏主意。会话不容易扩展,客户端和服务器平台兼容性考虑因素等...