【问题标题】:WCF Authenticate Client with databaseWCF 使用数据库验证客户端
【发布时间】:2012-04-21 17:14:58
【问题描述】:

我有一个应该为多个客户端提供服务的 WCF 服务。

WCF 将有一个与数据库通信的数据访问层。

这是我设计理念的一部分:My Design

如您所见 - 每个客户端将连接到第一个 WCF 服务以获取信息(获取产品、更新产品),并以 pub\sub 方式连接到第二个 WCF 服务,因此它能够接收通知关于它想要的不同的东西。

我在数据库中有一个“用户”表,其中包含系统中的所有用户。 (有管理员、普通用户和技术人员)。

我的问题是 - 我如何从客户端“登录”到数据库?

我目前的想法 - 在服务中有一个名为 'Connect ( username, password )' 的函数,当客户端连接时 - 它会传递用户名和密码以在数据库中进行身份验证,并且只有经过身份验证 - 客户端才会开始发送命令。

问题在于 - 任何人都可以编写自己的客户端连接到我的服务并运行其他功能而无需进行身份验证。无论客户端是否经过身份验证,我都可以通过保存服务来解决这个问题。

但是有没有更好的解决方案,只是在服务中具有“连接”功能?

希望有一些简单而有效的东西。

【问题讨论】:

    标签: wcf authentication


    【解决方案1】:

    您应该创建一个从UserNamePasswordValidator 抽象类派生并实现Validate() 方法的自定义用户名和密码验证器。然后,您可以根据需要验证提供的用户名和密码。要了解有关设置的更多信息,请阅读 this 文章。

    【讨论】:

    • 我们的要求是客户端需要输入用户名和密码,服务将根据数据库进行验证。您向我展示的这种方法是否适用?客户端从哪里“获取”它发送给服务的用户名和密码?
    • 这是一种自定义验证的方法,所以是的,它适用于存储在数据库中的凭据。至于客户端从哪里“获取”凭据,这取决于您的客户端设计。
    • 谢谢!所以你的意思是可以在客户端弹出一个窗口,要求他输入用户名和密码 - 这将被发送到服务?
    • 当然可以,但由您自己设计,以使这些凭据以优雅的方式传递到 WCF 服务。查看文章中引用的this 示例应用程序。
    猜你喜欢
    • 2011-04-09
    • 2013-10-07
    • 2018-02-12
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多