# @fonoster/identity 中文文档

规范地址：https://npmcn.com/package/%40fonoster/identity/

版本：0\.61\.0
npm 元数据更新时间：2026-11-15T14:01:57.795Z
中文译文更新时间：2026-11-15T04:19:38.331Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40fonoster/identity
原文对照：https://npmcn.com/package/%40fonoster/identity/?lang=original
项目主页：https://github.com/fonoster/fonoster#readme
源码仓库：https://github.com/fonoster/fonoster

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：22.2 MB，251 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：13 个
- 首次发布：2024-07-22T19:51:41.855Z
- 最新版本发布：2026-11-15T14:01:57.414Z
- 近 30 天下载量：8157（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：229（近 12 个月 65 个）

## 中文简介

长老会的身份证服务

## 安装

```sh
npm install @fonoster/identity
```

也可以使用：`pnpm add @fonoster/identity`、`yarn add @fonoster/identity`、`bun add @fonoster/identity`

## README

[![Discord](https://img.shields.io/discord/1016419835455996076?color=5865F2&label=Discord&logo=discord&logoColor=white)](https://discord.gg/4QWgSz4hTC) ![GitHub](https://img.shields.io/github/license/fonoster/fonoster?color=%2347b96d) ![Twitter Follow](https://img.shields.io/twitter/follow/fonoster?style=social)

这份文件是对身份模块的高级别概述,对维护者,贡献者,以及希望了解其架构和设计或对此作出贡献的开发者有帮助.

这个模块是 [长老会](https://fonoster.com/) 项目。 它本身没有做什么。 打算与其他模块相结合,以形成一个完整的解决方案。 有关该项目的更多信息,请访问 [https://github.com/fononster/fononster (英语)](https://github.com/fonoster/fonoster)。 。 。 .

![](https://raw.githubusercontent.com/fonoster/fonoster/0.6/assets/identity.png)

## 关于身份

长老会身份模块为长老会生态系统内部的安全用户管理、认证和授权提供了基石。 其设计具有灵活性和可扩展性,以适应长老会各个项目的不同和不断变化的需要.

## 关键特性

该模块提供全面的身份管理功能,包括创建,阅读,更新,并删除用户和工作空间实体. 用户可以代表个人账户或服务账户. 工作空间组织用户并精简许可管理;用户可以属于多个工作空间.

-   **认证** 通过JSON Web Tokens(JWTs)——用户名/密码,多功能认证(MFA),OAuth2和正文交换.
-   **授权** 通过角色-基于访问控制(RBAC),具有预先定义和自定义的角色.
-   **资源所有权** 键 `accessKeyId` (单位:千美元)`US…` 用户, `WO…` 工作空间.

## 独立运行

`fonoster-identity` (或 `fonoster/identity` 图像)为身份服务,没有 电话堆。 写着 `identity.json` (或 `.jsonc`编号 :`.yaml`),通过 `--config <path>`, (中文(简体) ), `/opt/fonoster/identity.json` 或者说 `./config/identity.json`,以及 不读取环境变量。 字段位于文件的根 :

```json
{
  "database": { "url": "postgresql://postgres:postgres@postgres:5432/fnidentity" },
  "encryptionKey": "change-me",
  "issuer": "https://id.acme.com",
  "keys": {
    "privateKeyPath": "/opt/fonoster/keys/private.pem",
    "publicKeyPath": "/opt/fonoster/keys/public.pem"
  },
  "smtp": { "host": "smtp.acme.com", "port": 587, "sender": "no-reply@acme.com", "auth": { "user": "ops", "pass": "secret" } },
  "auth": { "methods": ["password"], "signup": "invite" },
  "defaultUser": { "name": "Admin", "email": "admin@acme.com", "password": "changeme" }
}
```

`npm run db:deploy -- --config <path>` 应用使用同一文件的迁移. 每把钥匙在 [文件/配置](https://npmcn.com/package/docs/configuration.md)。 。 。 .

## 规格

本单元的规范规格——实体和资源所有权、非洲区域局模式、 id/access/refresh 令牌模型,令牌交换,RS256通过 `GetPublicKey`,与安全 实践——生活在OpenSpec,是真理的来源:

➡️ [`openspec/specs/identity/spec.md`](https://npmcn.com/package/openspec/specs/identity/spec.md)

这一能力的拟议变动情况如下: [`openspec/changes/`](https://npmcn.com/package/openspec/changes)。 。 。 .

## 常见问题

### @fonoster/identity 是什么？

长老会的身份证服务

### 如何安装 @fonoster/identity？

在项目目录运行 npm install @fonoster/identity，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 fonoster、fonoster-identity，可以用 npx fonoster 直接运行。

### @fonoster/identity 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @fonoster/identity 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @fonoster/identity 可以商用吗？

@fonoster/identity 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @fonoster/identity 的下载量有多少？

根据 npm 官方下载统计，@fonoster/identity 在 2026/10/15 – 2026/11/13 这 30 天内被下载 8,157 次，日均约 272 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @fonoster/identity 还在维护吗？

最新版本 0\.61\.0 发布于 2026/11/15（今天）；至今共发布 229 个版本，其中过去 12 个月发布了 65 个；首次发布于 2024/07/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

