首页 文章

OAuth 2.0仅用于授权应用程序而不是用户吗?

提问于
浏览
1

当我第一次听说OAuth是在ASP.NET Web API应用程序中时,我已经将它用作授权用户访问RESTful API资源的方法 . 当我觉得我正确使用它时,但是现在我认为我的想法是错误的,这是这个问题的主题 .

当时,我以下列方式使用OAuth:在API上有一个令牌 endpoints 来发出令牌 . 我在SPA中创建了一个登录页面,并使用授权类型密码将用户名和密码发布到令牌 endpoints ,并且我开始随每个请求发送回的令牌 .

当请求的 Authorization: Bearer [token] 标头带有在登录页面上发布了一些用户名的令牌时,我理解请求正在完成"with the user logged in",因此我可以授权访问资源 .

更深入地研究OAuth,我的结论是我对OAuth的使用完全错误 .

我现在的理解是OAuth只是用于授权应用程序而不是用户 . 在那种情况下,当我们使用 Authorization: Bearer [token] 标头发出请求时,我们正在向资源服务器说明发出请求的客户端已被授权访问该资源,但我们没有说任何关于该用户的信息?

在这种情况下,使用OAuth,我们可以说客户端应用程序可以访问哪些资源,但我们没有信息来决定是否允许用户访问资源?因为我最初的用法是真的错了吗?

1 回答

  • 1

    OAuth 2.0可用于授权客户端(应用程序)调用API . 此授权通过authorization grant完成 .

    authorization codeimplicitresource owner password grant的情况下,授权由 resource owner 给予,通过授权服务器验证用户并在同意屏幕上单击接受 .

    前两个授权流程是交互式的,需要一个理解HTTP(重定向)响应的代理 .

    大多数授权服务器也支持 client credentials grant . 在这种情况下,不涉及用户,并且预先注册的客户端(应用程序)使用其自己的客户端ID和秘密来与授权服务器进行身份验证 .

    要使用哪种授权流取决于您使用的客户端类型以及拥有客户端需要访问的资源的用户 . 我在my answer here中描述了差异 .

相关问题