14.2OAuth2基础

分类: Spring Cloud Security

OAuth2 基础

OAuth2 是微服务安全的重要协议。本节将学习 OAuth2 基础。

本节将学习:OAuth2 授权流程、授权码模式、客户端凭证模式,以及令牌类型。

OAuth2 授权流程

流程说明

OAuth2 授权流程:

  1. 客户端请求授权
  2. 资源所有者授权
  3. 授权服务器颁发授权码
  4. 客户端用授权码换取令牌
  5. 客户端使用令牌访问资源

角色说明

OAuth2 角色:

  • 资源所有者:拥有资源的用户
  • 客户端:请求访问资源的应用
  • 授权服务器:颁发令牌的服务器
  • 资源服务器:提供资源的服务器

授权码模式

流程说明

授权码模式流程:

  1. 客户端重定向到授权服务器
  2. 用户登录并授权
  3. 授权服务器返回授权码
  4. 客户端用授权码换取访问令牌
  5. 客户端使用令牌访问资源

适用场景

适用场景:

  • Web 应用
  • 移动应用
  • 需要用户交互
  • 安全性要求高

代码示例

@GetMapping("/oauth2/authorize") public String authorize() { return "redirect:" + authorizationServerUrl + "/oauth2/authorize" + "?client_id=" + clientId + "&response_type=code" + "&redirect_uri=" + redirectUri; }

客户端凭证模式

流程说明

客户端凭证模式流程:

  1. 客户端直接向授权服务器请求令牌
  2. 授权服务器验证客户端凭证
  3. 授权服务器颁发访问令牌
  4. 客户端使用令牌访问资源

适用场景

适用场景:

  • 服务间调用
  • 后台任务
  • 不需要用户交互
  • 机器对机器通信

代码示例

@PostMapping("/oauth2/token") public TokenResponse getToken(@RequestParam String clientId, @RequestParam String clientSecret) { // 验证客户端凭证 // 颁发访问令牌 return tokenResponse; }

令牌类型

访问令牌(Access Token)

访问令牌:

  • 用于访问受保护资源
  • 有效期较短
  • 包含权限信息
  • 可以是 JWT 或不透明令牌

刷新令牌(Refresh Token)

刷新令牌:

  • 用于刷新访问令牌
  • 有效期较长
  • 需要安全存储
  • 可以撤销

JWT 令牌

JWT 令牌:

  • 自包含令牌
  • 包含用户信息和权限
  • 无需查询数据库
  • 可验证签名

不透明令牌

不透明令牌:

  • 随机字符串
  • 需要查询数据库
  • 可以撤销
  • 更安全

官方资源

本节小结

在本节中,我们学习了:

第一个是 OAuth2 授权流程。 OAuth2 的基本授权流程。

第二个是授权码模式。 适用于需要用户交互的场景。

第三个是客户端凭证模式。 适用于服务间调用。

第四个是令牌类型。 访问令牌、刷新令牌、JWT 令牌等。

这就是 OAuth2 基础。理解 OAuth2 是使用 Spring Cloud Security 的基础。

在下一节,我们将学习 Spring Authorization Server。