SuperAPI AI 工具集

tango

安全与审计

查看项目

更新于 10-18 02:31

技能介绍

Tango 是面向 Elixir/Phoenix 的 OAuth 连接管理组件,按租户把 OAuth 连接保存在宿主应用的 Ecto 仓库中。资料显示其 0.3.0 版本新增带类型的刷新错误、不含凭据的连接信息、公开的生成锁、基于 ID 的撤销以及测试夹具;0.2.0 与 0.3.0 均使用 schema V03。

用途与主要能力:覆盖安装与首次迁移、提供方的新增与同步(Nango 目录、自定义)、无弹窗的服务端重定向流程、弹窗授权完成(校验器、finalize、清理)、挂载 HTTP 路由(CORS、API key)、LiveView 连接按钮、连接的使用/刷新/撤销与认证失败上报、刷新错误分类与退避、消费者测试夹具、0.2 到 0.3 升级以及错误调试。可按请求类型只阅读对应参考文档:bootstrap、providers、direct-flow、api、authorization、liveview、connections、refresh-errors、testing、upgrading、debug,flow 对应 direct-flow。

使用方式与约束:编写代码前应先检查 mix.exs、mix.lock 与解析后的 Tango 源码;本地 0.3.0 版本不代表已发布到 Hex,路径依赖没有 Hex 锁条目;文档与已安装实现不一致时以已安装实现为准;0.3 的 API 无法在 0.2.0 上编译,授权完成需要 0.2.0 或更高版本。租户 ID 必须来自经过认证的服务端会话而非浏览器输入,且需匹配 ^[a-zA-Z0-9_-]+$、不超过 255 字节;加锁不等于授权访问。凭据应保持在服务端,不应记录已加载的连接/授权结构、提供方响应体、code、原始 state、完成句柄或含凭据的 changeset;宿主记录中只持久化连接 ID 和选定身份字段,仅在调用提供方时获取 token。状态/身份读取使用连接信息,普通测试插入使用 Tango.Testing;宿主直接写 token 会绕过 Tango 的查询与遥测脱敏。判断使用 RefreshError.classify/1,上报使用 to_storage/1;服务中断和数据库故障不能证明用户撤销授权,只有资源 API 真正拒绝凭据才应进入 record_auth_failure/3。加密/API 密钥应放在运行时密钥中,密钥轮换会导致已存凭据不可读;绝不能把 TANGO_API_KEY 交给浏览器,因为 HTTP 路由信任调用方的租户头。弹窗流程需遵循 authorization.md:精确允许的来源、弹窗 source/origin/intent 校验、服务端持有的校验器、按租户限定完成范围,并在 Tango 配置的 Repo 上 finalize;直接会话与分阶段会话不可互换。mix tango.setup 仅用于初次安装;只有 schema 前进时才添加固定迁移,0.2 到 0.3 仍为 V03;Tango 不调度任何任务,宿主清理需先处理 authorizations 再处理 sessions。

适用场景与限制:适合在 Elixir/Phoenix 项目中接入和调试多租户 OAuth 连接。资料未提供价格、平台支持范围或效果数据。