Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web API创建API密钥_C#_Asp.net Web Api_Api Key - Fatal编程技术网

C# Web API创建API密钥

C# Web API创建API密钥,c#,asp.net-web-api,api-key,C#,Asp.net Web Api,Api Key,我感兴趣的是为web.API创建API密钥,并允许客户端使用API密钥与API通信,而不是使用web.API提供的授权 我希望多个客户端能够与web.api通信。我可以使用api密钥,允许客户端与客户端通信,而不是创建用户名和密码 有这样的内置功能吗 如果有人想实施它,你会怎么做 您可以通过使用来实现。基本上,可能有一个名为ApiKey(ApiKey,secretKey)的数据库表。每个客户端都有每个Apikey和密钥: ApiKey类似于公钥,将通过HTTP发送(与用户名类似) 密钥不是通过H

我感兴趣的是为web.API创建API密钥,并允许客户端使用API密钥与API通信,而不是使用web.API提供的授权

我希望多个客户端能够与web.api通信。我可以使用api密钥,允许客户端与客户端通信,而不是创建用户名和密码

有这样的内置功能吗


如果有人想实施它,你会怎么做

您可以通过使用来实现。基本上,可能有一个名为ApiKey(ApiKey,secretKey)的数据库表。每个客户端都有每个Apikey和密钥:

  • ApiKey类似于公钥,将通过HTTP发送(与用户名类似)

  • 密钥不是通过HTTP发送的,请使用此密钥向hmac发送一些信息,并将哈希输出发送到服务器。从服务器端,基于公钥,您可以获取相关的密钥和散列信息,以与散列输出进行比较

  • 我已将详细答案发布在:


    您可以在我的回答中通过ApiKey更改用户名,通过密钥更改散列密码,以符合您的想法。

    因此,您将要求客户端在每个API请求上构建散列?这里涉及的开销是什么?我想是的,这就是HMAC的工作方式,请您详细说明您的问题。如果您对客户端调用的每个方法调用
    ComputeHash(string-hashedPassword,string-message)
    ,那么每次调用会增加多少时间?
    ComputeHash
    平均需要多长时间才能完成?没什么,不到一毫秒。因此,几乎没有任何开销,非常好。获得用户的密钥一直是一个难题。您可以使用一个两步流程:通过ssl将哈希+盐密码(连同盐)发送到服务,并让服务发回关联的密钥。将来的事务使用(哈希+盐)键而不是密码。您也可以使用密码以这种方式重置令牌。