【问题标题】:One AntiForgery token for all requests一个用于所有请求的 AntiForgery 令牌
【发布时间】:2014-08-27 22:11:08
【问题描述】:

我有带有方法的 Web API 2 网络服务:

// Makes and returns Token by login/password.
string GetToken(string login, string password);

// Returns orders of current account.
Order[] GetMyOrders();

我想在 GetMyOrders() 中通过他对这个方法的请求来验证用户。

请求必须包含 Token,它会被映射到 web-service 端的 accountId。

客户端将为每个请求使用此令牌。

我可以使用 ASP.NET Identity 实现 GetToken() 方法吗?

使用此令牌和 ASP.NET 身份进行身份验证的正确方法是什么?我可以使用 ValidateAntiForgeryTokenAttribute 或其他东西吗?

GetToken() 只能通过 https 工作,但 GetMyOrders() 将通过 http 工作。

【问题讨论】:

  • 您的 API 是 ASP.NET MVC 站点的一部分还是独立的?
  • 它是独立的网络服务。它没有任何网络视图。
  • ValidateAntiForgeryTokenAttribute 用于防止CSRFnot usually required for an API

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


【解决方案1】:

是的,您可以在 webapi 中实现 OAuth Bearer Tokens。

下面的例子:

http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

验证令牌的最佳方法是内置的,这意味着您只需要放置[Authorize] 数据注释。

所以基本上你应该使用Owin middleware,这将允许你使用 OAuth Bearer 令牌身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多