udarajay/dunbar
用于 Laravel API 的简单易用的代理
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: ~6.0
- illuminate/support: ~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0
This package is auto-updated.
Last update: 2024-09-29 05:29:36 UTC
README
Dunbar
简单易用(轻量级)的 Laravel API 代理。
如果您从任何公共客户端(如单页网页应用或移动/桌面应用)调用您的 Laravel API,那么您很可能需要将 client-secret 凭据存储在某个地方。任何人都可以很容易地检查您的代码并抓取您的安全令牌。
使用“轻量级”(服务器端)代理是保护您的客户端 API 的最快方式;简单来说,这个代理将坐在您的前端客户端和后端 API 之间。您通常会用这样的 client-id 和 client-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,您可以将其锁定,只接受来自代理的请求。此外,您还可以在计划的时间或需要时滚动客户端密钥,而无需更新任何前端客户端。
安装
- 通过 composer 安装
Dunbar
composer require udarajay/dunbar
- 发布配置
php artisan vendor:publish
- 编辑文件
app/config/dunbar.php以满足您的需求。主要您可以编辑它以更改 cookie 名称和代理端点。
您可能还需要使用 php artisan config:clear 和 php 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许可证下发布。
