WCF成员资格提供者与自定义服务授权管理员w.自定义用户名验证器

Fre*_*son 3 wcf wcf-security

我是WCF的新手,我正在尝试设置服务,并收到了两个不同的建议:

  1. 使用内置身份验证服务与成员资格提供程序(http://msdn.microsoft.com/en-us/library/bb398990 ( VS.100 ) .aspx)(自定义UserNamePasswordValidator与Silverlight 3.0).
  2. 使用自定义服务授权管理器使用自定义的用户名验证和"TransportWithMessageCredential"(http://msdn.microsoft.com/en-us/library/ms729794(VS.100).aspx)(在WCF服务应用程序的Architechture)

我可以看到的区别在于方法二,每次调用服务时都会验证用户凭据,而且我不必在服务器上保持会话状态,我喜欢.

我是否误解了这些概念,两者解决了不同的问题?

有人可以帮我理解这两个以及何时使用?

mar*_*c_s 6

ASP.NET内置成员资格和角色提供程序只为您提供SQL Server数据库(和管理GUI)中的现成表和存储过程,以处理创建用户,定义角色,将用户分配给角色等等.

他们为WCF提供了一个预定义的成员身份验证提供程序 - 所以基本上,您只是免费获得或多或少的所有内容,而不必担心创建用户,管理密码等所有细节问题.

首先,我肯定会使用这个选项 - 更容易,更快速地启动和运行.

自定义身份验证验证程序更像是一个高级主题,如果您具有超出ASP.NET成员资格提供程序的特定和专门需求,您可能希望查看该主题.它为您提供更多功能 - 您基本上可以从WCF获取用户名和密码,并且由您决定是否对该呼叫者进行身份验证 - 但它确实也是相当多的工作.

身份验证的方式没有区别--WCF的最佳做法是使用每次呼叫服务,在这种情况下,无论您使用何种身份验证机制,您都将始终基于每个呼叫对呼叫者进行身份验证.在后台使用(Active Directory,ASP.NET Membership,custom).

所以我绝对建议使用ASP.NET内置的成员资格和角色提供程序,只要这些就足够了 - 而且我很确定它们会很长时间没问题!