在客户端 - 服务器身份验证中使用哪种授权类型?

时间:2014-10-03 20:57:00

标签: web-services oauth oauth-2.0 client-server

我有一个网络服务和几个客户端应用程序(Android和ios应用程序和一个webapp),它们使用该Web服务中的信息。

我想使用oAuth2.0对webservice中的客户端进行身份验证,但我不知道这种情况建议使用哪四种授权类型。

根据RFC6749(http://tools.ietf.org/html/rfc6749#section-1.3),有四种授权类型

  1. 授权码(似乎更糟糕,因为它有两个阶段)
  2. 资源所有者密码凭据
  3. 客户端凭据
  4. 在这种情况下推荐使用哪种类型?

1 个答案:

答案 0 :(得分:3)

  • 如果您的客户端应用程序是使用脚本语言(JS,AngularJS ...)在浏览器中实现的,我建议您使用Implicit Grant type
  • 如果您的客户能够支持重定向(例如PHP网站),我建议您使用Authorization Code Grant typethe client directs the resource owner to an authorization server, which in turn directs the resource owner back to the client with the authorization code
  • 如果您的应用无法支持重定向,则可以使用资源所有者密码凭据。但它需要直接访问用户的凭据。许多资源服务器不允许该授权类型来保护这些凭据。

请注意,当客户端是资源所有者时,将使用客户端凭据授予类型。