我是一个相对新手,对WCF的世界还不太了解,所以我的问题可能比较初级。目前我正在设计一层WCF服务。其中之一是身份验证服务,因此我想出了以下身份验证机制:
IUserService.TryAuthenticateUser(string username, string password, out string key)
基本上,用户尝试进行身份验证,如果成功,则会收到一个会话密钥/安全密钥/其他密钥...然后该密钥对于每个其他的"WCF操作"都是必需的,例如:
IService.GiveMeMyFeatures(string key);
IService.Method1(string key);
这种机制对我来说看起来非常直观,而且实现起来也很容易,所以让我困惑的是为什么我找不到类似的WCF示例?这个唯一的键(实际上是一个带有WCF端过期时间的会话密钥)然后可以根据应用程序的架构从各种应用程序中使用:对于ASP.NET,它可以存储在Cookie中,对于Winform/WPF/Mobile,我想它可以存储在表单类中的一个字段中等等...
因此,问题1出现了:你认为这种方法怎么样?
我还读到过,我可以使用内置的ASP.NET身份验证服务(包括成员资格提供程序等...如果我理解正确的话)。从架构角度来看,我真的不喜欢这种方法,因为当从ASP.NET页面进行身份验证时,工作流程将如下所示:ASP.NET -> WCF -> ASP.NET身份验证服务 -> 响应
在这种情况下,人们还可以绕过WCF层并直接从asp.net页面调用auth.服务方法。我知道通过每个身份验证请求都要经过WCF层,我会失去一些性能,但对我来说拥有良好分层的架构非常重要...
这里是问题2:这种方法与第一种方法相比的优缺点是什么,为什么它如此受欢迎,从架构角度来看它有点不对?
我也读到过,我可以为每个WCF方法调用发送用户凭据,并使用内置机制对请求进行身份验证和响应。
问题3:你认为这种方法怎么样?
总之 - 显然有许多身份验证方法,但你认为哪种方法最好、最通用(考虑到将从asp.net/wpf/mobile等调用WCF服务)?
提前谢谢:)