SpringSecurity(12)——OAuth2相关概念

角色

  1. 资源所有者(Resource Owner):通常是用户,如昵称、头像这些资源的拥有者(用户只是将这些资源放到服务提供商的资源服务器中)
  2. 第三方应用(Client):希望使用资源服务器提供的资源
  3. 认证服务器(Authorization Server):专门用于对资源所有者的身份进行认证,对要访问的资源进行授权、产生令牌的服务器。访问资源需要通过认证服务器由资源所有者授权才可以访问
  4. 资源服务器(Resource Server):存储用户的资源,验证令牌有效性。比如:维系资源服务器存储了微信用户信息
  5. 服务提供商(Service Provider):认证服务和资源服务归属于一个机构,该机构就是服务提供商
    SpringSecurity(12)——OAuth2相关概念_第1张图片

授权码模式(Authorization Code)

OAuth在第三方应用和服务提供商之间设置一个授权层,第三方应用不能直接登录“服务提供商”,只可以通过授权层将“第三方应用”和“用户”区分开来。“第三方应用”通过授权层获取令牌(AccessToken),获取令牌后通过令牌去访问服务提供商。令牌和用户密码不同,可以指定授权层令牌的权限范围和有效期,“服务提供商”根据令牌的权限范围和有效期,向“第三方应用”开放用户对应的资源。

工作流程:

  1. 第三方应用向认证服务器请求授权
  2. 用户告知认证服务器同意授权(通常是通过用户扫码或输入“服务提供商”的用户名密码的方式)
  3. 认证服务器向第三方应用告知授权码(code)
  4. 第三方应用使用授权码(code)申请Access Token
  5. 认证服务器验证授权码,颁发Access Token
    SpringSecurity(12)——OAuth2相关概念_第2张图片

简化模式(Implicit)

SpringSecurity(12)——OAuth2相关概念_第3张图片

密码模式(Resource Owner Password Credentials)

将用户和密码传过去,直接获取Access Token,用户同意授权动作是在第三方应用上完成,而不是在认证服务器,第三方应用申请令牌时,直接带用户名和密码去向认证服务器申请令牌。这种方式认证服务器无法判断用户是否真的授权,用户和密码可能是第三方应用盗取的

工作流程:

  1. 用户向客户端直接提供认证服务器想要的用户名和密码
  2. 客户端将用户名和密码发给认证服务器,向认证服务器请求令牌
  3. 认证服务器确认后,向客户端提供访问令牌

客户端模式(Client Credentials)

当一个第三方应用自己本身需要获取资源,而不是获取用户资源时,客户端模式十分有用

工作流程:

  1. 客户端向认证服务器进行身份认证,并要求一个访问令牌
  2. 认证服务器确认后,向客户端提供访问令牌

SpringSecurity(12)——OAuth2相关概念_第4张图片

你可能感兴趣的:(SpringSecurity,java,spring,OAuth2)