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

时间:2016-03-01 08:06:50

标签: oauth-2.0 spring-security-oauth2

我目前正在尝试使用Spring Security OAuth实现OAuth2身份验证的Web服务(API)。据我所知,给定用户,客户端应用程序和服务器,身份验证过程如下:

  1. 用户通过客户端从服务器请求资源
  2. 客户端从服务器
  3. 检索请求令牌
  4. 服务器使用临时请求令牌和重定向URL进行响应
  5. 客户端加载网页(重定向URL)并允许用户输入凭据以验证请求令牌。表单输入发送到服务器,客户端不知道输入。
  6. 服务器使用授权代码回复,该代码将传递给客户
  7. 客户端使用授权码来检索访问令牌(如果请求,还可以选择刷新令牌)
  8. 用户将令牌访问令牌发送给客户
  9. 客户端使用访问令牌来检索所请求的资源
  10. 在Spring OAuth中,request an access token有三种授权类型:

    授权码,这是我上面描述的方法,刷新令牌和用户凭据。我不知道用户凭据检索是如何工作的,它是否类似于通过刷新令牌检索?

1 个答案:

答案 0 :(得分:2)

您在上面做的几个陈述不正确。如果您再次了解OAuth2规范,可能会有一个好主意:https://tools.ietf.org/html/rfc6749

为了专注于你的问题,我只是在这之后参考你问题的最后一段。

OAuth2支持 4 授权类型,即“授权代码”,“隐式”,“资源所有者密码凭据”和“客户端凭据”。您称之为“用户凭据”的那个将是“资源所有者密码凭据”。在此授权类型中,您放弃了OAuth的好处,即无需将资源所有者(也称为用户)凭据移交给客户端。但是,它仍然具有不必将密码存储在客户端上并为每个资源请求发送密码的好处,因为使用了令牌。流程如下:

  1. 资源所有者向客户端发送凭据
  2. 客户端将凭据发送到授权服务器
  3. 服务器返回访问令牌(最好是a 刷新令牌)
  4. 客户端在后续请求中使用访问令牌 资源服务器
  5. 所以是的,您可以说当客户端已经拥有有效的刷新令牌(从中获得授权)时,资源所有者密码凭据授权的流程与流类似。