【问题标题】:some problems about asp.net webAPI关于asp.net webAPI的一些问题
【发布时间】:2012-06-10 15:13:16
【问题描述】:

我现在正在构建一个在服务器端使用 asp.net webAPI 的应用程序,我遇到了关于验证的问题:

我想为多平台提供我的webAPI,就像浏览器的javascript,或者windows phone等等,所以我决定用HTTP-BASIC隐式验证,“(原谅我的英语不好),问题是,过去的时间。

我总是在SESSION中获取一些用户信息,但是我们知道RESTful风格的webAPI是无会话状态的,那么如何存储用户信息:

我有了一些想法,希望你能帮助我做出正确的选择,非常感谢

1。 将除用户密码等重要信息外的信息放入浏览器的cookie中。每次我发出http请求时,我都会获取cookies。在服务器端,我可以查询用户的信息。并进行其他步骤。(该序列不适用于移动平台,因为cookies仅在浏览器中)

2.用户HTTP-BASIC验证,每次服务器收到httpRequest,都会在HTTP-Headers中获取用户名和密码,服务器端也可以查询用户信息。

【问题讨论】:

    标签: c# asp.net wcf-web-api


    【解决方案1】:

    我见过的大多数 REST API 都通过以下两种方式之一处理身份验证:

    1. HTTP 标头,无论是基本身份验证,还是一些用于传递凭据的自定义标头。这将是您的选择 2。这仅在您通过 HTTPS 运行时才真正好用,因为凭据将在标头中以明文形式显示。
    2. 使用一对令牌,一个作为标识符(有点像用户名),一个在客户端和服务器之间共享机密(有点像密码)。然后由标识符、请求参数的部分和秘密组成散列。然后将该哈希和标识符与请求一起发送。服务器知道秘密后,然后使用相同的方法计算哈希,并确保它们匹配(Amazon Web Services 使用这种方法,以及使用 OAuth 的任何东西)。

    更多的网络 API 似乎正在迁移到这里的第二种方法,因为它可以抵抗篡改和重放攻击,这与基本身份验证不同。当然,它更复杂。

    RFC 5849 Section 3.4 用于 OAuth,虽然干读,但会完成用于创建哈希的过程,如果您愿意,可能是实施的一个很好的起点。 C# 中的基本实现是 provided on the OAuth Google Code site,可能是更好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-24
      • 2013-07-07
      • 2013-05-10
      • 2012-03-18
      • 2023-03-09
      • 2021-07-01
      • 2011-09-27
      • 1970-01-01
      相关资源
      最近更新 更多