English 中文(简体)
为web服务生成数量关系的验证
原标题:
  • 时间:2009-04-07 05:38:23
  •  标签:

我有一个面向外部的web服务,但是我需要生成验证系统,以确保请求来自一个有效的客户。

让年代说最初的web服务定义如下:

[OperationContract]
public void Service.RequestMethod (string clientId, int reqNumber,
    string reqText)
{
    // do stuff with the parameters
}

我想确保实际上来自客户机的请求指定的<代码> clientId > < /代码参数。

我现在的计划是另一个参数添加到方法签名,给各种各样的校验和。

[OperationContract]
public void Service.RequestMethod (string clientId, int reqNumber,
    string reqText, string reqChecksum)
{
    // verify reqChecksum, then
    // do stuff with the parameters
}

我需要一个函数,验证计算的校验和是通过客户端。应该计算<代码> reqNumber < /代码>和<代码> reqText > < /代码参数以及关系的“密码”的客户端和服务器。

实际上,应该是:

private bool VerifyChecksum(int reqNumber, string reqText,
    string clientPassword, string reqChecksum)
{
    // hash reqNumber, reqTxt, and clientPassword
    // ensure it matches reqChecksum
}

有人有什么建议对于这个哈希函数或模型作为一个整体?

它需要于消息、放置和很难猜(高熵)。

最佳回答

你可能寻找某种< a href = " http://en.wikipedia.org/wiki/Message_authentication_code " rel = " nofollow noreferrer " > MAC < / >。像MD5散列。MD5的概念是,你把它应用到“一些”数据和得到一个值。只要“数据”部分对每个人都是不知道,这几乎不可能复制的价值。

问题回答

为什么不使用一个标准的web服务身份验证方法?你会有一个选择著名的和被广泛实现的解决方案,不会泥泞的接口通过传递两个参数和身份验证信息。

你可能仍然有授权问题,如果经过身份验证的客户端可以通过多个clientId,但同样有很多已知的解决方案,这和它年代完全站在你这边。例如,你可以到ACL实现,列出了所有可接受(userId, clientId methodname)组合和禁止一切。





相关问题
热门标签