2015-06-15 107 views
0

我是OAuth2概念的新手。我很想在我的应用程序中实现这一点。此应用程序提供REST API。我看了一些教程,做了一些研究,并在我的应用程序中以工作状态实现它。Spring-Security-OAuth2中的grant_type

但是在进行一些搜索时,我阅读了OAuth2中不同类型的grant_type。我试图了解这一点,但没有得到实际的区别,应该使用哪一个来保护REST API。 因此,我想知道grant_type类型的“密码”,“client_credential”等应该使用哪种方式,以及在哪种情况下,或者哪些应该用于保护REST API?

同样在某些地方,我发现/oauth/token的请求是不同的。 一些地方的Authorization标题为Basic 'some_encoded_string'。 而在某些地方,它是持证人'some_encoded_string'。这些要求有什么不同?

总结这个我有2个问题 -

  1. 对于grant_type类型的“密码”,“client_credential”等,这应使用其中的场景,或者应该用于确保REST API的?

  2. /oauth/token请求令牌的方式有什么区别。

发挥我在实施spring-security-oauth2方面的知识。

回答

2

您需要使用的授权取决于您的使用情况以及访问资源的客户端应用程序的性质。一般来说,没有一个应用REST API资源的授权。您需要提供更多关于API的信息,以及您如何与它们进行交互。

如果用户必须为客户端授予访问API的权限,那么您通常会使用“授权代码”授权。如果客户端直接访问资源而没有最终用户的干预,那么它通常会使用“客户端凭证”授权。

在大多数情况下,您应该避免使用password授权,因为这意味着用户必须将其用户名和密码提供给客户端应用程序。如果应用程序可以使用其他授权,例如授权码,那么这是可取的。可信应用程序(例如用户在其计算机上安装的本机应用程序)将是可能使用密码授权的一种情况。

客户端通常会使用“基本”身份验证来访问令牌端点。 “承载”身份验证用于访问受保护资源(如您的API),并传递从授权服务器获得的访问令牌。

为什么你认为你需要使用OAuth2?我很好奇,因为你说你不明白什么是赠款类型。在确定如何使用OAuth2或为什么之前,您需要了解这一点。

+0

它需要的项目所以我使用OAuth2和是的我不明白它的概念,但它并不意味着我永远不会明白这一点。 – Anita

+0

你说过,在大多数情况下不应该使用'password'授权类型,但是你没有解释在哪种情况下我们应该使用授予类型?还可以使用Basic type Authorization标头更多地解释标记请求。 – Anita

+0

我在密码授权上增加了一些。尽管没有关于为什么你的应用程序需要OAuth2的更多信息,但很难给出关于你应该使用什么(或者它是否有意义)的具体答案。 [spec](http://tools.ietf.org/html/rfc6749)中涵盖了令牌请求等的所有细节,因此我建议您在此处查看细节。 –

相关问题