udarajay/dunbar

用于 Laravel API 的简单易用的代理

v0.6.1 2019-10-30 02:01 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:36 UTC


README

Dunbar

简单易用(轻量级)的 Laravel API 代理。

Latest Stable Version Total Downloads License

如果您从任何公共客户端(如单页网页应用或移动/桌面应用)调用您的 Laravel API,那么您很可能需要将 client-secret 凭据存储在某个地方。任何人都可以很容易地检查您的代码并抓取您的安全令牌。

使用“轻量级”(服务器端)代理是保护您的客户端 API 的最快方式;简单来说,这个代理将坐在您的前端客户端和后端 API 之间。您通常会用这样的 client-idclient-secret 进行认证调用 API:

POST /auth HTTP/1.1
Host: api.example.com

grant_type=password
&client_id=webapp
&client_secret=a-secret-code-no-one-should-see
&username=admin
&password=password

现在,您将向代理端点(在我们的例子中是 example.com/dunbar)发出相同的 API 调用,但 没有 client-secret。代理将接收请求,添加 client-secret 并将请求转发到您的后端 API。

服务器通常将像这样响应访问令牌和刷新令牌:

{
    "access_token": "Jcncdj32CXdsdiUYtxnt6H8vCjndiCbdsu",
    "refresh_token": "83JCd97cdkalc53nB2DHJui3d83NcdicS",
    "token_type": "Bearer",
    "expires": 1535645629
}

但使用我们的轻量级代理,它将简单地创建一个只有代理才能解密的加密 cookie。

现在,对于所有未来的 API 调用

GET /ajax/resource/123 HTTP/1.1
Cookie: <encrypted cookie with tokens>
Host: example.com

proxy 将解密 cookie,将授权头添加到请求中,并将其转发到 API,如下所示:

GET /resource/some-protected-resource HTTP/1.1
Authorization: Bearer the-access-token-form-the-cookie
Host: api.example.com

响应将直接返回到浏览器或应用,就像您在您的 API 中定义的那样。

那么,这个“轻量级”代理到底做了什么?

简单来说,代理允许您将客户端凭据(例如,访问令牌)硬编码到这个您可以信任的轻量级服务器端组件(代理)中。它为您认证客户端 API 并返回一个只有代理才能解密的加密 cookie。您在通过代理进行认证后要访问受保护资源,只需在所有调用中传递此 cookie 即可。

还有其他什么?

为了进一步保护您的 API,您可以将其锁定,只接受来自代理的请求。此外,您还可以在计划的时间或需要时滚动客户端密钥,而无需更新任何前端客户端。

安装

  1. 通过 composer 安装 Dunbar
composer require udarajay/dunbar
  1. 发布配置
php artisan vendor:publish
  1. 编辑文件 app/config/dunbar.php 以满足您的需求。主要您可以编辑它以更改 cookie 名称和代理端点。

您可能还需要使用 php artisan config:clearphp artisan route:cache 在 Laravel 中重新生成路由和配置缓存。

用法

该包将自动注册一个代理端点(默认为 yourdomain.com/dunbar)。将所有 API 调用发送到代理端点以进行认证,如下所示:

POST dunbar/example.com/oauth/token HTTP/1.1
Host: example.com

&grant_type=password
&client_id=webapp
&username=admin
&password=mypassword

并像这样请求所有受保护资源

POST dunbar/example.com/protected_resource HTTP/1.1
Host: example.com

如果 access_token 过期并且您有一个 refresh_token,则 Dunbar 将为您调用 OAuth 服务器并使用新的一个刷新 access_token 并更新 cookie。

特性

  • 用于保护 Laravel API 的简单代理。与 Passport 或 Andy Millington 和 Simon Hamp 维护的 League OAuth2 服务器无缝协作。
  • [ 即将推出] 与数据库交互(Passport 默认为第一个),直接从 OAuth 提供程序访问客户端密钥。
  • [ 即将推出] 按计划自动滚动客户端密钥。

有疑问?

创建一个问题,并使用question标签。我会尽力帮助并尽可能回答。

贡献吗?

请这样做 :) 只需创建一个PR。

许可证

本软件包在MIT许可证下发布。