【发布时间】:2016-03-26 09:39:30
【问题描述】:
当我第一次听说 OAuth 是在 ASP.NET Web API 应用程序中时,我将它用作授权用户访问 RESTful API 上的资源的方法。到那时我觉得我使用它是正确的,但现在我认为我的想法是错误的,这就是这个问题的主题。
当时,我通过以下方式使用 OAuth:在 API 上有一个令牌端点来颁发令牌。我在 SPA 中创建了一个登录页面,并将用户名和密码发布到带有授权类型密码的令牌端点以及我开始随每个请求发送回来的令牌。
当请求的 Authorization: Bearer [token] 标头带有登录页面上的某个用户名发出的令牌时,我知道请求是在“用户登录”的情况下完成的,因此我可以授权访问资源。
深入研究 OAuth 我的结论是我对 OAuth 的使用是完全错误的。
我现在的理解是 OAuth 仅用于授权应用程序而不是用户。在这种情况下,当我们使用 Authorization: Bearer [token] 标头发出请求时,我们是在向资源服务器标识发出请求的客户端已被授权访问资源,但我们并没有说明用户的任何信息?
在这种情况下,使用 OAuth,我们只能说明客户端应用程序可以访问哪些资源,但我们没有信息来决定是否允许用户访问资源?正因为如此,我最初的用法确实是错误的对吧?
【问题讨论】:
标签: security asp.net-web-api oauth-2.0 authorization identity