Pav*_*ner 10 c# api rest aes token
我刚刚开始在.NET中开发我的第一个REST API.由于它将是无状态的,我将使用令牌进行身份验证:
基本思路(System.Security.Cryptography):
登录:
请求需要身份验证的方法:
我看待它的方式,这种方法有以下优点:
首先,我想知道这是否是一个好方法.
除此之外,我还没弄清楚,在服务器上存储AES和SHA256密钥的位置(我应该对它们进行硬编码吗?如果我将它们放入web.config或使用机器密钥,而不是在负载平衡服务器的情况下我有问题, ...).
最后,我在哪里存储AES IV向量,因为Crypto.CreateEncryptor需要它进行解密?这是否意味着用户必须在每次请求时发送令牌+ IV?
我希望这有任何意义,我提前感谢你的答案.
更新:
好的,现在我做了更多的研究并找到了解决方案:
我没有使用FormsAuthenticationTicket,因为在.NET中存在以下问题:
这是问题下的评论主题的后续跟进.
你似乎对OAuth究竟是什么感到困惑,所以希望我能在这里澄清一下.
OAuth不是您使用的Web服务.它是一种协议,描述了站点可以根据服务对用户进行身份验证的方式,而不允许站点知道用户的凭据是什么.作为附带好处,大多数OAuth提供商还具有用于查询用户信息的Web服务,并且可以同时授予这样做的许可.
通常,您有兴趣从网站的角度实施OAuth(例如,AcmeWidgets.com),以便用户可以通过Facebook或Google等登录.但是,您也可以实现服务端(例如,Facebook通常会在哪里),并允许其他人对您进行身份验证.
因此,举例来说,假设您有一个Web服务,允许第三方网站为用户提供Acme品牌小部件.您的第一个第三方实施者是流行的MyBook.org.流程看起来像这样:
用户单击该按钮,该按钮将重定向到AcmeWidgets.com.URL看起来像:
http://acmewidgets.com/oauth/user?r=http%3A%2F%2Fmybook.org%2Foauth%2Fclient&appid=12345
用户被重定向回MyBook,网址如下:
http://mybook.org/oauth/client?token=ABCDEFG
服务器端的MyBook现在接受该令牌,并将一个Web服务调用BACK返回给AcmeWidgets:
http://acmewidgets.com/oauth/validate?token=ABCDEFG&appid=12345&appsecret=67890
带有令牌的MyBook现在可以调用AcmeWidgets API:
http://acmewidgets.com/api/provision?appid=12345&token=ABC123&type=etc
这就是众所周知的OAuth舞蹈.请注意,这里有许多实现定义的东西,比如URL,编码各种令牌的方法,令牌是否可以过期或被撤销等.
希望能为您清除一切!