mapkyca/known-oauth2-server

提供API调用用的OAuth2认证服务器

资助包维护!
Paypal

安装量: 9,617

依赖项: 0

建议者: 0

安全: 0

星标: 7

关注者: 3

分支: 2

公开问题: 0

类型:known-plugin

1.2.1 2021-04-29 20:36 UTC

This package is auto-updated.

Last update: 2024-08-29 04:51:47 UTC


README

**实验性**

此插件为Known提供OAuth2服务器,允许用户创建应用程序,并允许客户端使用OAuth2访问令牌对API和网站进行身份验证。

此插件是对规范的实验性基本实现,所以请尝试使用并报告您发现的所有问题!

用法

  • 在插件中安装
  • 通过设置创建应用程序
  • 在您的OAuth2客户端使用适当的密钥

支持

当前插件支持

  • response_type=code
  • grant_type=authorization_code
  • grant_type=refresh_token
  • grant_type=password
  • state参数验证
  • 作用域支持
  • OpenID Connect

示例用法

获取代码

https://mysite.com/oauth2/authorise/?response_type=code&client_id=<你的API密钥>&redirect_uri=<你的端点路径>

如果需要,您将被跳转到一个登录和授权页面,所以请继续前进。

根据规范,您可以省略redirect_uri,在这种情况下,响应将是一个直接的json编码的blob。如果指定了redirect_uri,您将被转发到端点,并在GET字段中包含适当的参数。

获取令牌

https://mysite.com/oauth2/access_token/?grant_type=authorization_code&client_id=<你的API密钥>&redirect_uri=<你的端点路径>

您应该会得到一个包含访问令牌、过期时间和刷新令牌的json编码的blob。

刷新令牌

如果您的访问令牌已过期,您可以使用刷新令牌更新它。

https://mysite.com/oauth2/access_token/?grant_type=refresh_token&refresh_token=<刷新令牌>

成功将返回新的访问令牌、刷新令牌和过期时间。它还将销毁原始令牌。

访问令牌

在成功登录后,使用的令牌将保存在当前会话中的$_SESSION['oauth2_token'],您可以使用它来检查作用域权限、应用程序ID和其他详细信息。

授予给特定用户的范围也保存在用户对象的数组$user->oauth2[$client_id]['scope']中,并在登录时进行交叉检查。

为什么不使用本机签名HTTP呢?

本机而言,Known使用每个用户的API密钥来签名请求,那么为什么不使用这个呢?

当然,您仍然可以,OAuth2服务器并不替代这个选项。在许多方面,签名HTTP方法更容易开始,然而...

  1. 几乎每种语言都有许多现有的OAuth2库。
  2. 使用OAuth2,您为每个应用程序提供不同的凭证。这意味着,如果您不再希望从应用程序A访问,但仍想保留B和C,您可以专门撤销A的令牌。

OpenID Connect

如果包含作用域openid,在成功后,服务器将在id_token字段返回一个OpenID Connect签名JWT。

此令牌将包含有关认证用户的基本信息。如果您还请求emailprofile作用域,您将获得一些额外的配置文件信息(电子邮件、全名、图片URL、用户名等)。

您可以使用应用程序的公钥(从 https://yourserver.com/oauth2/CLIENTID/key 获取)来验证此令牌

请参阅