【问题标题】:REST Service custom authentication tokenREST 服务自定义身份验证令牌
【发布时间】:2015-01-05 21:22:58
【问题描述】:

我想为我的 Web API 创建自定义身份验证机制(没有 owin、oauth 等第三方库)。

我该如何开发它?我查看了几篇关于 Web API 身份验证方案的帖子,但我也感到困惑。

根据我的情况;用户对 Web 服务的请求,首先是服务检查令牌和 UDID 详细信息,如果没有这些 bot 值,则用户强制身份验证,如果用户身份验证服务返回此 UDID 的令牌。

正如您在上面的场景中看到的那样,开发基于令牌的休息服务的最佳实践和真正方法是什么。

【问题讨论】:

    标签: web-services rest authentication token asp.net-web-api


    【解决方案1】:

    实际上,您可以根据要支持的内容和安全级别考虑几种方法。请记住,REST 是无状态的,您不应该在服务器端保留身份验证状态。这意味着您应该为每次调用提供身份验证提示并对发出请求的用户进行身份验证。

    以下是可能的方法:

    • HTTP 提供基本身份验证。您可以在 HTTP 标头 Authorization 中提供使用 Base 64 编码的用户名/密码。在执行请求之前,服务器应用程序获取授权提示并使用后端的提示检查它们(即事物是否匹配)

    • 事实上,基本身份验证毫无疑问是基本的;-) 我的意思是密码/密钥总是在请求中发送。密码/密钥很容易读取,因为标头 Authorization 的内容是使用 Base64 编码的,并且密钥令牌始终有效。没有对验证和到期的内置支持。更进一步,您可以使用临时令牌。为此,您的 RESTful 应用程序需要提供两个额外的资源:

      • 第一个允许根据身份验证提示(用户名、密码)获取临时令牌。此令牌具有到期日期,将在执行实际请求时使用。此资源通常还返回一个刷新令牌以在过期时获取一个新令牌。这可以防止再次发送用户名/密码(它们只在第一次发送一次)。
      • 当前一个基于刷新令牌过期时,第二个会获得一个新的临时令牌。
    • 最后一个级别包括在实际执行请求时将请求签名添加到第二种方法。这将在执行请求时在客户端完成。

    对于最后两个,OAuth2 可以作为解决方案,因为它提供了设计/实施此类方法的标准。您会注意到,您不必使用第三方库来执行此操作。

    我最近写了一篇博客文章,更详细地描述了这些方法。请参阅此链接http://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/

    希望对您有所帮助。 蒂埃里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多