【问题标题】:ASP.NET Web Api - Authorise from querystring values and API securityASP.NET Web Api - 从查询字符串值和 API 安全授权
【发布时间】:2012-02-29 06:00:24
【问题描述】:

在设计和学习 ASP.NET Web API 时,我遇到了一些挑战,希望得到帮助和讨论。

excellent post 的启发,我设计了一个没有 OAuth 的安全 REST API,我想知道如何最好地验证我打算要求的各种令牌和信息。

简要总结是我将要求(在查询字符串中)以下信息..

  • 用户名
  • API 密钥
  • 时间戳
  • 基于用户已颁发的密钥的签名散列,并与请求值一起散列

我的问题/想知道的是:

如果这是一种合理的方法,那么使用 ASP.NET Web API 实现它的最佳方法是什么?

我目前正在考虑使用我可以标记我的方法的自定义属性,一种从查询字符串中获取所需的 Authorize 属性或一些包含所有值的 POCO 类型对象,我可以使用将所有授权类型代码保存在一个位置。

有没有人对此有任何经验或想法?

谢谢:)

【问题讨论】:

  • 您可以在全局 Begin_Request 处理程序或全局 Authenticate_Request 处理程序中调用您的身份验证代码。

标签: asp.net-mvc-3 asp.net-web-api


【解决方案1】:

目前,您可能已经看到,AuthorizeAttribute 方法用于 Web API。我认为这是一个相当不错的方法,因为我们可以将此属性放在需要授权的单个项目上。

我已通过扩展System.Web.Http.Filters.AuthorizationFilterAttribute 完成授权。扩展后,所有授权细节由您决定,您有很多方法可供选择。

【讨论】:

  • 当然。我的 BasicAuthorizationFilterAttribute 扩展了 System.Web.Http.Filters.AuthorizationFilterAttribute,然后覆盖了 OnAuthorization 方法。由于 OnAuthorization 方法接受 HttpActionContext 作为其参数。该对象允许我访问请求消息并从那里获取所需的数据(在本例中为 HttpRequestHeaders.Authorization 标头)。从那里开始,必须检查该值。如果有效,则该方法返回。否则,该方法分配 actionContext.Response 对象并返回“授权失败”响应。
猜你喜欢
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
相关资源
最近更新 更多