Skip to content

认证

AstroAPI 根据您的使用场景支持多种认证方式。

API 密钥认证

API 密钥是服务器间通信的推荐方式。

获取 API 密钥

  1. 登录 AstroAPI 控制台
  2. 进入 Settings > API Keys
  3. 点击 Create API Key
  4. 配置权限和速率限制
  5. 复制生成的密钥(该密钥仅显示一次)

使用 API 密钥

X-Api-Key 请求头中包含您的 API 密钥:

bash
curl -X GET "https://api.astroapi.cloud/api/calc/natal" \
  -H "X-Api-Key: ak_live_xxxxxxxxxxxx"

API 密钥权限

API 密钥可以限定为特定权限范围:

权限描述
calc:read访问计算端点
content:read访问内容/解读端点
chart:read访问星盘渲染端点
modules:read访问已购买的模块

角色

AstroAPI 在组织内使用基于角色的访问控制:

角色描述
owner完全访问所有组织功能
manager可以管理用户、账单和内容
member基本的计算和内容读取访问权限

角色权限

权限ownermanagermember描述
org:create创建组织
org:read读取组织信息
org:update更新组织信息
org:users:read读取用户信息
org:users:create邀请用户
org:users:update更新用户信息
org:users:delete移除用户
billing:read查看账单
billing:manage管理账单
content:read读取内容
content:create创建内容
content:update更新内容
content:delete删除内容
content:custom-copy创建自定义副本
content:restore恢复内容
calc:use使用计算端点
chart:use使用星盘端点
modules:read读取模块信息
admin:access管理员访问

组织上下文

对于多租户应用程序,API 密钥的作用范围限定于组织。组织上下文根据所使用的 API 密钥自动应用。

域名限制

API 密钥可以配置域名限制,以限制哪些网站可以使用它们:

  • example.com — 精确域名匹配
  • *.example.com — 所有子域名
  • * — 允许所有域名(不推荐)

在控制台中创建或编辑 API 密钥时配置域名限制。

重要限制

域名限制仅能防止基于浏览器的滥用。它们依赖于 OriginReferer 请求头,浏览器会强制执行这些头,但在浏览器之外(如 curl、脚本、服务端代码)可以轻易被伪造。

客户端与服务端使用

服务器间通信(推荐)

对于生产应用程序,请始终在后端服务器上使用 API 密钥:

┌─────────────┐      ┌─────────────────┐      ┌─────────────┐
│   Browser   │ ───► │  Your Backend   │ ───► │  AstroAPI   │
│  (no keys)  │      │  (API key here) │      │             │
└─────────────┘      └─────────────────┘      └─────────────┘

这种方式:

  • 保持您的 API 密钥安全和隐藏
  • 允许您添加自己的认证层
  • 防止最终用户提取 API 密钥
  • 支持请求签名和额外的安全措施

客户端 / 浏览器使用

如果您必须在浏览器中直接使用 API 密钥(例如,静态站点上的嵌入式小组件),请注意以下限制:

  • API 密钥是可见的,存在于 JavaScript 源代码和网络请求中
  • 任何人都可以提取您网站上的密钥
  • 域名限制仅能防止其他网站通过 JavaScript 使用您的密钥——无法防止有人复制密钥并在其他地方使用

对于客户端使用,我们建议:

  • 启用域名限制
  • 设置严格的速率限制
  • 使用较短的过期时间
  • 监控异常使用情况

客户责任

重要

您负责 API 密钥的安全性和使用情况。

使用您的 API 密钥发出的所有 API 请求都计入您的配额并从您的账户计费,无论请求是由您还是由获得您密钥的他人发出的。

如果您在客户端代码中暴露了 API 密钥并被滥用,您将对由此产生的使用量和费用负责。AstroAPI 无法区分使用有效 API 密钥发出的合法请求和未授权请求。

为降低风险:

  1. 尽可能使用服务器间通信
  2. 切勿将 API 密钥提交到版本控制
  3. 如果怀疑密钥已泄露,立即轮换密钥
  4. 设置使用量警报以检测意外峰值

安全最佳实践

  • 在生产应用程序中使用服务器间通信
  • 除非绝对必要,否则切勿在客户端代码中暴露 API 密钥
  • 定期轮换 API 密钥
  • 使用所需的最小权限
  • 为客户端密钥启用域名限制
  • 设置适当的速率限制
  • 在控制台中监控 API 密钥使用情况

AstroAPI Documentation