【问题标题】:Validate OAuth bearer token with form post使用表单发布验证 OAuth 不记名令牌
【发布时间】:2023-03-18 14:36:01
【问题描述】:

我使用 Web API 2 创建了一个基于 OData 的 Web 后端。这非常有效,在控制器上使用 AuthorizeAttribute。

我希望能够通过标准 html 表单和提交来上传文件。

我们将 OAuth 令牌作为隐藏输入字段传递,该令牌通常在 OData 请求的标头中传递。

问题:如何在控制器中验证这一点?

【问题讨论】:

  • 您想验证控制器中的令牌已经具有 [Authorize] 属性吗?抱歉无法理解问题。
  • 没有。令牌没有像通常那样在标头中传递,而是一个隐藏字段。 [Authorize] 不能在使用标准提交的标准表单的控制器上。

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


【解决方案1】:

然后您需要取消保护令牌,然后从“票证”中检查是否存在主体以及是否已通过身份验证(检查属性 IsAuthenticated)。在控制器中使用以下代码:

string token = "Your token goes here";
Microsoft.Owin.Security.AuthenticationTicket ticket = Startup.OAuthBearerOptions.AccessTokenFormat.Unprotect(token);

【讨论】:

  • 谢谢!比我预期的要简单得多。
  • Unprotect 函数将返回过期的令牌,因此您还需要确保令牌没有过期,例如:ticket.Properties.ExpiresUtc > DateTime.UtcNow
  • 我遇到了同样的问题,这是与此答案相关的问题:stackoverflow.com/questions/33913508/…
猜你喜欢
  • 2016-12-04
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 2015-08-01
  • 2019-06-14
  • 2011-04-08
相关资源
最近更新 更多