Oauth 2.0 Spring中OAuth2中的身份验证类型:如何通过用户凭据进行身份验证?

Oauth 2.0 Spring中OAuth2中的身份验证类型:如何通过用户凭据进行身份验证?,oauth-2.0,spring-security-oauth2,Oauth 2.0,Spring Security Oauth2,我目前正在尝试使用SpringSecurityOAuth实现一个带有OAuth2身份验证的web服务(API)。据我所知,给定一个用户、一个客户端应用程序和一个服务器,身份验证过程如下: 用户通过客户端从服务器请求资源 客户端从服务器检索请求令牌 服务器使用临时请求令牌和重定向URL进行响应 客户端加载网页(重定向URL)并允许用户输入凭据以验证请求令牌。表单输入被发送到服务器,客户端不知道输入 服务器用一个授权码进行回复,授权码被传递给客户端 客户端使用授权代码检索访问令牌(如果请求刷新令牌,

我目前正在尝试使用SpringSecurityOAuth实现一个带有OAuth2身份验证的web服务(API)。据我所知,给定一个用户、一个客户端应用程序和一个服务器,身份验证过程如下:

  • 用户通过客户端从服务器请求资源
  • 客户端从服务器检索请求令牌
  • 服务器使用临时请求令牌和重定向URL进行响应
  • 客户端加载网页(重定向URL)并允许用户输入凭据以验证请求令牌。表单输入被发送到服务器,客户端不知道输入
  • 服务器用一个授权码进行回复,授权码被传递给客户端
  • 客户端使用授权代码检索访问令牌(如果请求刷新令牌,还可以选择刷新令牌)
  • 用户将访问令牌交给客户端
  • 客户端使用访问令牌检索请求的资源
  • 在Spring OAuth中,有三种授予类型:


    授权代码(即我上面描述的方法)、刷新令牌和用户凭据。我不知道通过用户凭据进行检索是如何工作的,它与通过刷新令牌进行检索类似吗?

    您上面所说的几句话是不正确的。如果您再看看OAuth2规范,这可能是一个好主意:

    为了集中讨论你的问题,我只参考你问题的最后一段

    OAuth2支持4授权类型,即“授权代码”、“隐式”、“资源所有者密码凭据”和“客户端凭据”。您称之为“用户凭据”的是“资源所有者密码凭据”。在这种授予类型中,您失去了OAuth的好处,即不必将资源所有者(又名用户)凭据移交给客户端。但是,它仍然具有不必在客户端上存储密码并为每个资源请求发送密码的优点,因为使用了令牌。工艺流程如下:

  • 资源所有者向客户端发送凭据
  • 客户端将凭据发送到授权服务器
  • 服务器返回访问令牌(可选为 刷新令牌)
  • 客户端在后续请求中使用访问令牌 资源服务器
  • 因此,是的,您可以说资源所有者密码凭据授予的流与客户端已经拥有有效刷新令牌(从该令牌授予)时的流相似