如何使用用户名和密码安全性验证用户?

时间:2015-12-18 17:33:24

标签: wcf authentication

我想在WCF项目中使用用户名和密码验证。所以,如果我没有错,我必须实现用户名passowrd验证器接口。此类具有验证客户端的逻辑,因此服务使用此类来验证客户端。

在我的情况下,用户和密码存储在数据库中,所以我想如果我使用服务的perCall实例化,服务会在每个方法调用中调用数据库来验证客户端,所以我在想表现原因是个坏主意。更考虑到数据库有一个散列密码,而不是密码,所以我必须用salt散列密码,以便将结果与我存储的散列passowrd进行比较。这将非常有用。

行为就是这样,服务会在每次方法调用中从数据库中获取数据吗?

另一种选择是在内存中拥有所有用户和密码,但我不知道这是不是一个好主意,为了安全起见,在内存中有所有密码,还因为它可能需要很多内存仅用于存储此信息。

使用会话的另一个选择是,因为我会拥有会话ID,然后我可以在内存中进行会话登录。但是,如果我没有错,会话将用于确保按顺序发送包,因此我不应该使用会话进行身份验证。

所以一般来说,我希望有一些推荐用于在不可靠的连接中实现身份验证而不需要会话。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

据我所知,userName&在打开代理时验证密码,因此无论执行多少次调用,除非您为单次调用创建新代理,否则将进行一次验证。每当发送调用时验证启动都可以通过自定义 IDispatchMessageInspector 引入,您可以在其中检查标头以检索用户名&密码并根据数据库验证它们。