Java Spring-Security-OAuth2中的grant_类型

Java Spring-Security-OAuth2中的grant_类型,java,rest,spring-security,oauth-2.0,spring-security-oauth2,Java,Rest,Spring Security,Oauth 2.0,Spring Security Oauth2,我不熟悉OAuth2的概念。我必须在我的应用程序中实现它。此应用程序提供RESTAPI。我遵循一些教程,做了一些研究,并在我的应用程序中以工作状态实现了它 但是在做一些搜索时,我读到了OAuth2中不同类型的grant_类型。我试图了解这一点,但没有得到实际的区别,我应该使用哪一个来保护RESTAPI。 所以我想知道,对于grant_类型的密码,client_credentialetc应该使用什么,在什么情况下,或者应该使用什么来保护restapi 在某些地方,我还发现对/oauth/token

我不熟悉OAuth2的概念。我必须在我的应用程序中实现它。此应用程序提供RESTAPI。我遵循一些教程,做了一些研究,并在我的应用程序中以工作状态实现了它

但是在做一些搜索时,我读到了OAuth2中不同类型的grant_类型。我试图了解这一点,但没有得到实际的区别,我应该使用哪一个来保护RESTAPI。 所以我想知道,对于grant_类型的密码,client_credentialetc应该使用什么,在什么情况下,或者应该使用什么来保护restapi

在某些地方,我还发现对/oauth/token的请求是不同的。 在某些地方,授权头作为基本的“某些\u编码的\u字符串”给出。 在某些地方,它是“一些编码的字符串”。这些要求有什么不同

总结这一点,我有两个问题-

对于grant_类型的密码、客户端_证书,应使用哪种类型的密码以及在哪种情况下使用哪种类型的密码,或者应使用哪种类型的密码来保护REST API

从/oauth/token请求令牌的方式有什么不同


了解我在实现spring-security-oauth2方面的知识。

您需要使用的授权取决于您的用例和访问资源的客户端应用程序的性质。一般来说,没有一项拨款可以应用REST资源。您需要提供更多关于API是什么以及如何与它们交互的信息

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

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

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


为什么您认为您需要使用OAuth2呢?我很好奇,因为你说你不明白补助金的用途。在判断您将如何使用OAuth2或为什么使用OAuth2之前,您确实需要了解这一点。

这是项目所需要的,因此我正在使用OAuth2,是的,我不理解它的概念,但这并不意味着我永远都不会理解。您告诉我在大多数情况下不应使用密码授予类型,但你没有解释在什么情况下我们应该使用那种补助金类型?您还可以解释一下基本类型授权头的令牌请求。我在密码授权上添加了更多内容。但是,如果没有更多关于应用程序为什么需要OAuth2的信息,就很难给出关于应该使用什么或者它是否有意义的具体答案。令牌请求等的所有详细信息都包含在中,因此我建议您查看那里的详细信息。