java - Spring-Security-OAuth2 中的 grant_type

标签 java rest spring-security oauth-2.0 spring-security-oauth2

我是 OAuth2 概念的新手。我必须在我的应用程序中实现它。该应用程序提供 REST API。我遵循了一些教程,做了一些研究,并在我的应用程序中以工作状态实现了它。

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

另外,在某些地方我发现对 /oauth/token 的请求是不同的。 有些地方的 Authorization header 被指定为 Basic 'some_encoded_string' 。 在某些地方它是承载“some_encoded_string”。这些请求有什么区别?

总结一下我有两个问题 -

  1. 对于 grant_type 类型“password”、“client_credential”等,应该使用哪些类型以及在哪种情况下使用,或者应该使用哪些类型来保护 REST API?

  2. /oauth/token请求token的方式有什么不同。

启发我实现 spring-security-oauth2 的知识。

最佳答案

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

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

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

客户端通常会使用“基本”身份验证来访问 token 端点。 “承载”身份验证用于访问 protected 资源(例如您的 API),传递从授权服务器获取的访问 token 。

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

关于java - Spring-Security-OAuth2 中的 grant_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30846746/

相关文章:

rest - 无法使用 Neo4j REST API 动态设置节点标签

java - Spring 安全:custom userdetailService not visible No bean named 'myUserDetailsService' is defined

java - Android - 从 url 下载 JSON 文件

java - 在地址数组中循环?

java - 将菜单项添加到 Netbeans 平台菜单栏

用于从子资源列表中更新/添加/删除项目的 REST 设计

java - GridBagLayout 中组件的大小不正确

java - dropbox (file put) api 使用什么内容类型?以及如何模仿它?

Spring:注解等价于 security:authentication-manager 和 security:global-method-security

grails - 如何自定义 Spring Security UI 添加字段