phpway/one-auth-server

简单OAuth2服务器实现,功能有限,专为单页面应用(SPA)设计

0.9.4 2024-08-24 08:05 UTC

This package is auto-updated.

Last update: 2024-09-30 19:03:18 UTC


README

OneAuth服务器是一个非常简单的OAuth2服务器实现,功能有限,专门为根据以下工作流程仅使用引用令牌进行认证的单页面应用(SPA)设计。

如果您需要一个功能完整的OAuth2服务器实现,您可以查看官方OAuth页面 https://oauth.ac.cn/code/php/

功能

目前,OneAuth服务器提供3个控制器

  • AuthorizeController - 处理获取授权码的请求,这是一个一次性使用、短期有效的随机代码,用于SPA获取访问令牌
  • TokenController - 处理获取访问令牌的请求。
  • ResourceController - 用于验证API请求。

每个控制器所需请求数据和响应细节在以下工作流程中描述。

由于OneAuth服务器专为认证SPA设计,OneAuth服务器与客户端应用程序之间的所有通信对用户来说都是透明的(无论是通过URL搜索参数,还是通过在POST请求中发送表单数据),这意味着这两个实体之间没有交换数据的回话。

因此,工作流程中没有客户端密钥,因为SPA没有隐藏它的机制。但是它使用PKCE保护,该保护要求客户端应用程序在请求授权码时发送code verifier(随机字符串)的散列,然后在交换授权码以获取访问令牌时发送code verifier的明文。

PSR-7 请求/响应

OneAuth服务器使用与PSR-7兼容的请求和响应对象来处理获取授权码和/或访问令牌的请求。因此,您需要提供一个最适合您应用程序的PSR-7实现。以下是一些您可以选择的选项

为了向客户端发送响应,您还需要实现一个响应发射器,或者使用现有的一个(例如,来自Slim框架的ResponseEmitter.php)。

SPA工作流程

SPA workflow diagram

待办事项

  • 为保护API添加资源控制器
    • 在标题中识别令牌
    • 在GET中识别令牌
    • 在POST中识别令牌
  • 实现撤销令牌
    • 单个令牌
    • 给定用户的全部
  • 添加刷新令牌的功能