没有用户登录或使用密码请求令牌的Web API [授权]属性?

时间:2014-02-15 16:07:01

标签: asp.net-mvc oauth asp.net-web-api owin katana

如果我不理解某事,请纠正我。我正在使用从VS模板生成的新的Web API应用程序。

  • 用户确实在Web API应用程序的登录页面上注册。
  • 用户可以从Web API应用程序外部注册(从任何知道api / Accounts URL的设备),但它需要以纯文本形式传递敏感信息。
  • 示例ValuesController包含[Authorize]
  • 如果用户未登录,则从浏览器访问/ api /值将抛出401。
  • 即使用户登录,来自Fiddler的访问/ api /值也会抛出401.这是因为它需要一个Authorize:Bearer标头,访问令牌不能从Web应用程序外部获得。
  • 我们可以使用令牌端点从应用程序外部请求令牌,但使用内置令牌端点需要将用户的用户名和密码作为纯文本发送。

我想所有工作都需要从外部可信客户端应用程序(必须能够访问存储用户信息的同一数据库)完成。从客户端应用程序,我如何创建一个访问令牌,以便我可以在标题中发出一个具有该访问令牌的请求?

假设我能够从客户端生成可接受的访问令牌。 [Authorize]属性是否仍会阻止访问,因为用户在技术上不会登录?或者[Authorize]实际上是否记录了用户,如果它不会导致401?

1 个答案:

答案 0 :(得分:1)

AuthorizeAttribute的{​​{1}}属性为false时,IsAuthenticated将阻止访问。这与访问令牌完全分开。