首页 文章

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

提问于
浏览
2

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

  • 用户通过客户端从服务器请求资源

  • 客户端从服务器检索请求令牌

  • Server使用临时请求令牌和重定向URL进行响应

  • 客户端加载网页(重定向URL)并允许用户输入凭据以验证请求令牌 . 表单输入发送到服务器,客户端不知道输入 .

  • 服务器使用授权代码进行回复,授权代码将传递给客户端

  • 客户端使用授权代码来检索访问令牌(如果请求,还可以选择刷新令牌)

  • 用户将令牌访问权限发送给客户端

  • 客户端使用访问令牌来检索所请求的资源

在Spring OAuth中,request an access token有三种授权类型:

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

1 回答

  • 2

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

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

    OAuth2支持 4 授权类型,即'Authorization Code','Implicit','Resource Owner Password Credentials'和'Client Credentials' . 你所指的那个'user credentials'将是'Resource Owner Password Credentials' . 在此授权类型中,您放弃了OAuth的好处,即无需将资源所有者(也称为用户)凭据移交给客户端 . 但是,它仍然具有不必将密码存储在客户端上并为每个资源请求发送密码的好处,因为使用了令牌 . 流程如下:

    • 资源所有者将凭据发送给客户端

    • 客户端将凭据发送到授权服务器

    • 服务器返回访问令牌(最好是刷新令牌)

    • 客户端在后续请求中使用访问令牌来重新配置服务器

    所以是的,您可以说当客户端已经拥有有效的刷新令牌(从中获得授权)时,资源所有者密码凭据授权的流程与流程类似 .

相关问题