Asp.net mvc Web API[Authorize]属性,而无需用户登录或使用密码请求令牌?

Asp.net mvc Web API[Authorize]属性,而无需用户登录或使用密码请求令牌?,asp.net-mvc,oauth,asp.net-web-api,owin,katana,Asp.net Mvc,Oauth,Asp.net Web Api,Owin,Katana,如果我不明白,请纠正我。我正在使用从VS模板生成的新Web API应用程序 用户确实在Web API应用程序的登录页面上注册 用户似乎可以从Web API应用程序外部(从任何知道API/帐户URL的设备)注册,但它需要以纯文本形式传递敏感信息 示例值控制器具有[Authorize] 如果用户未登录,从浏览器访问/api/值将抛出401 即使用户已登录,从Fiddler访问/api/值也会抛出401。这是因为它需要Authorize:Bearer头,而访问令牌在web应用程序外部是不可用的 我们

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

  • 用户确实在Web API应用程序的登录页面上注册
  • 用户似乎可以从Web API应用程序外部(从任何知道API/帐户URL的设备)注册,但它需要以纯文本形式传递敏感信息
  • 示例
    值控制器
    具有
    [Authorize]
  • 如果用户未登录,从浏览器访问/api/值将抛出401
  • 即使用户已登录,从Fiddler访问/api/值也会抛出401。这是因为它需要Authorize:Bearer头,而访问令牌在web应用程序外部是不可用的
  • 我们可以使用令牌端点从应用程序外部请求令牌,但使用内置令牌端点需要发送用户的用户名和密码作为纯文本
我想所有的工作都需要从一个外部的可信客户端应用程序(它必须能够访问存储用户信息的同一个数据库)中完成。在客户端应用程序中,我如何创建一个访问令牌,以便我可以发出一个请求,该请求将在头中包含该访问令牌


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

当当前
IIdentity
Isauthorized
属性为false时,
authorized属性将阻止访问。这与访问令牌完全分离。

您的步骤正常。但我认为你把对最后一部分的理解与cookies身份验证和令牌身份验证混为一谈

[Authorize]属性是否仍会阻止访问,因为用户 技术上不会登录吗?或者[授权]是否实际记录 如果它没有导致401,那么用户会在中吗

使用cookie身份验证时,用户在技术上需要登录,并且服务器上需要存在有效会话,这将是一个问题

但是,令牌身份验证的情况并非如此。只要您拥有有效的承载令牌,就可以从任何设备访问api