3

我正在使用 servicestack.net 库开发 Web 服务。

在我的场景中,将从 WPF 应用程序调用 Web 服务。我需要能够验证只有经过批准的客户端应用程序正在调用我的服务。

这就像在客户端应用程序中硬编码“用户名”和“密码”一样简单吗?这显然不是正确的方法。有没有更好的办法?

编辑 此外,在客户端,用户自己将能够使用用户名/密码登录并向服务发起请求(不确定这是否会影响任何事情,所以我想我会提到它),

4

1 回答 1

5

有关 ServiceStack 中的身份验证的更多背景信息,请参阅此问题

通常,您会验证用户而不是您似乎正在做的客户端。但是,如果您试图锁定服务,以便它们只能通过一组特定的客户端访问,您应该考虑在您的客户端和服务器中使用一些 PKI。

基本上是这样的:客户端在登录时发送一个额外的令牌,其中包含用户的加密版本:密码以及嵌入在应用程序中的私钥。服务器具有客户端公钥,因此将在登录时执行额外的验证步骤以解密用户:传递令牌并将其与经过验证的用户凭据进行比较。

如果 PKI 解决方案过于繁重,则不使用加密的替代策略可能是让客户端发送一个秘密 Guid,当他们登录时,它将发送 Guid 的 MD5 哈希版本和当前时间,以及未哈希版本时间。如果时间在指定阈值内并且 MD5 哈希有效,则他们使用经过身份验证的客户端。

于 2011-10-11T14:23:33.940 回答