
Go Micro 生产环境 Web 控制台与认证 API 网关micro server 使用与原理指南【免费下载链接】go-microA Go agent harness and service framework项目地址: https://gitcode.com/gh_mirrors/go/go-micromicro server是 go-micro 面向生产环境的可选 Web 控制台与认证 API 网关它不构建、不运行、也不监听服务进程而是通过注册中心registry发现已经运行中的服务为它们提供带 JWT 认证的 HTTP 访问入口、用户/令牌管理、端点权限Scopes以及日志状态查看能力。读完本文你将掌握micro server的安装启动、与micro run的职责划分、完整功能清单、典型生产部署路径并能结合cmd/micro/gateway/下的源码理解其认证、令牌撤销与端点权限的底层实现。micro server 是什么micro server是 go-micro 官方文档中定义的一个可选组件定位为生产环境的安全入口它发现已经在运行的 go-micro 服务例如由 systemd 通过micro deploy托管的服务并提供一套 Web UI 与认证 API 来发现和交互这些服务。它的核心定位可以用一句话概括micro server不构建、不运行、也不监听watch服务。它只通过注册中心发现服务并提供 UI/API 与之交互。这意味着它天然适合服务已经跑起来、只需要一个可控的管理面的场景——服务进程由 systemd、Supervisor 或容器编排负责micro server只负责发现与暴露。micro server vs micro run两者共享同一套统一网关实现详见后文统一网关架构但职责截然不同。官方文档给出了如下对比micro runmicro server用途本地开发生产控制台构建服务是否运行服务是作为子进程否发现已在运行的服务热重载是否认证是默认admin/micro是默认admin/microScopes是/auth/scopes是/auth/scopes控制台带认证、scopes、agent 的完整网关 UI带 API Explorer、日志、用户/令牌管理的完整控制台适用场景日常开发部署环境、共享服务器简单来说开发阶段用micro run部署后的共享/生产环境用micro server。值得注意的演进当前仓库源码中micro server命令在 cmd/micro/gateway/server.go 里被注册为隐藏的micro gateway别名Hidden: true运行时会打印弃用警告功能完全一致。文档中默认账号admin/micro的描述对应早期实现当前实现initAuth已改为不创建默认凭证而是为每个进程生成一次性的静态机器令牌machine token并在启动日志中打印一次详见下文认证策略一节。安装micro server是microCLI 内置命令安装 CLI 即包含该命令go install go-micro.dev/v6/cmd/microlatest安装完成后即可直接使用micro server以及等价的micro gateway。启动与登录启动服务micro server然后打开 http://localhost:8080使用默认管理员账号登录admin/micro。结合源码看启动时实际发生的事情远不止起一个 HTTP 服务。在 cmd/micro/gateway/server.go 的Run函数中解析监听地址默认:8080可通过--address或环境变量MICRO_SERVER_ADDRESS覆盖根据绑定地址判定认证是否开启详见下文认证策略开启时若未提供静态令牌则生成一个 24 字节随机令牌并在启动日志中打印一次若指定了--mcp-address还会并行启动独立的 MCP 网关通过StartGateway启动统一 HTTP 网关并与 MCP 网关一起等待信号SIGINT/SIGTERM或首个网关退出后统一关闭。功能总览官方文档列出的核心功能如下Web 控制台Web Dashboard— 浏览已注册服务查看端点、请求/响应 schemaAPI 网关API Gateway— 在/api/{service}/{method}提供带认证的 HTTP-to-RPC 代理JWT 认证— 所有 API 端点都要求 Bearer token 或会话 cookie令牌管理Token Management— 生成、查看、复制、吊销 JWT 令牌用户管理User Management— 创建、列出、删除用户密码使用 bcrypt 哈希存储端点权限Endpoint Scopes— 通过/auth/scopes限制哪些令牌可以调用哪些端点MCP 集成— AI Agent 演练场与 MCP 工具支持权限scope强制日志与状态Logs Status— 从控制台查看服务日志与状态PID、运行时长下面逐项展开并结合源码说明实现方式。Web 控制台控制台由 cmd/micro/gateway/server.go 中的模板系统渲染页面模板位于 cmd/micro/web/templates包括首页home.html、API 文档api.html、服务详情service.html、端点表单form.html、日志logs.html/log.html、状态status.html、认证三件套auth_login.html / auth_tokens.html / auth_users.html、Agent 演练场playground.html与 Scopes 管理scopes.html。首页会读取~/micro/run/*.pid文件统计服务数量、运行/停止数量并给出绿/黄/红三色状态点getDashboardData见 server.go L259-L306/logs与/status页面则分别读取~/micro/logs/*.log与 pid 文件展示日志和进程状态PID、启动时间、运行时长。API 网关HTTP-to-RPC 代理网关核心路由见 cmd/micro/gateway/server.goPOST /api/{service}/{method}会把 HTTP 请求体作为 RPC 入参转发到对应服务端点同时兼容/api/{service}/{pkg}/{method}三段式路径。调用示例curl http://localhost:8080/api/helloworld/Helloworld/Call -d {name: John}完整的调用链为解析路径 → 通过注册中心registry.GetService校验服务与端点是否存在 → 校验端点 ScopescheckEndpointScopes→ 用client.DefaultClient.NewRequest构造 RPC 请求 →Call执行 → 返回 JSON 响应。/api页面会列出所有服务与端点的请求/响应 schema并附认证说明横幅。JWT 认证所有/api/x端点与受保护页面都要求Authorization: Bearer token请求头或micro_tokencookie 兜底。令牌校验中间件authRequired见 server.go L166-L243依次检查令牌是否存在缺失时 API 返回 401 JSONUI 重定向到/auth/login是否匹配静态机器令牌匹配则视为管理员直接放行JWT 签名与结构是否有效exp是否过期是否已被吊销isTokenRevoked检查默认 store 中是否存在jwt/token记录。JWT 使用RSA256 签名RSA 密钥对存放在~/micro/keys/private.pem与~/micro/keys/public.pem首次启动时自动生成 2048 位密钥见 cmd/micro/gateway/util_jwt.goGenerateJWT会写入sub、type、scopes、exp四个 claimL65-L74。令牌管理/auth/tokens页面支持生成、查看脱敏显示首尾 4 位、复制与吊销 JWT 令牌。源码中令牌签发后写入默认 store 的jwt/token键storeJWTToken每次请求都会校验该键是否存在以实现即时吊销服务型令牌typeservice不需要密码即可签发有效期默认 24 小时删除用户时该用户的全部令牌会被立即吊销deleteUserTokens遍历jwt/前缀记录并删除归属该用户的令牌。用户管理/auth/users页面支持创建、列出、删除用户。密码通过bcrypt.GenerateFromPassword(..., bcrypt.DefaultCost)哈希后存入账号的password_hash元数据明文密码永远不会被保存或展示。账号以auth/id为键存储在默认 store 中Account直接复用框架的auth.Account类型。删除内置admin用户时会写入auth/.admin-deleted标记避免重启后再次重建默认账号。端点权限Endpoint ScopesScopes 提供细粒度的访问控制通过/auth/scopes页面管理并在每一条调用路径上强制生效路径说明POST /api/{service}/{endpoint}HTTP API 调用POST /mcp/callMCP 工具调用Agent 演练场AI Agent 发起的工具调用权限规则匹配逻辑见checkEndpointScopesserver.go L331-L379Scope 为精确字符串匹配——令牌上的billing匹配端点要求的billing令牌携带*scope 时绕过所有检查管理员通配符未设置 scope 的端点对任何有效令牌开放一个端点可以要求多个 scope令牌只需匹配其中一个scope 名是自由字符串可按项目约定命名。典型的权限模式组合模式端点 Scopes令牌 Scopes效果保护整个服务在所有 greeter 端点设置greeter可用 Bulk Set 批量设置greeter.*携带greeter的令牌该令牌可调用任意 greeter 端点限制单个端点在payments.Payments.Charge上设置billing携带billing的令牌仅该端点受限基于角色在敏感端点设置admin管理员令牌带admin普通用户令牌带user只有管理员令牌能调用敏感端点完全访问任意携带*的令牌绕过所有 scope 检查Scope 要求以endpoint-scopes/service.endpoint为键存储在默认 store 中/auth/scopes/bulk支持按通配符模式批量设置如greeter.*。MCP 集成与 Agent 演练场网关提供GET /mcp/tools— 把注册中心发现的所有服务端点动态转换为 MCP 工具列表含 JSON Schema 入参描述与 scope 信息POST /mcp/call— 执行工具调用转换为 RPC 调用并返回result与trace_id/agent— AI Agent 演练场/api/agent/prompt接收用户提示词自动从注册中心发现工具、组装ai.Tool定义调用配置好的 LLM 提供商支持 anthropic/openai/gemini/atlascloud/groq/mistral/together并在执行工具调用前再次校验端点 Scopes。除 HTTP 网关外--mcp-address可启动独立的 MCP 网关支持限流、审计、熔断、x402 支付等生产级控制项。日志与状态/logs与/status页面分别展示~/micro/logs/*.log下的服务日志和~/micro/run/*.pid下的进程状态PID、启动目录、服务名、运行时长首页则以红/黄/绿状态点汇总整体健康度。典型生产部署在服务通过micro deploy部署之后# 在服务器上启动控制台 micro server由 systemd 托管的服务会通过注册中心被发现自动出现在控制台中。micro server只负责提供认证 API 与 Web UI不参与服务进程管理。配合部署流程看部署指南 中给出的完整生命周期是micro run开发→micro build构建二进制→micro deploy经 SSH 推送到服务器并由 systemd 托管→micro server生产 Web 控制台。micro init --server会在服务器上创建/opt/micro/bin/、/opt/micro/data/、/opt/micro/config/目录以及micro.servicesystemd 模板。何时使用 micro server根据官方文档适合使用micro server的场景包括你已经有服务在生产环境运行systemd 或其他方式托管希望获得 Web UI你需要带 JWT 令牌的认证 API 访问你需要用户管理与令牌吊销能力你运行的是多人共享的部署环境。反之如果只是本地日常开发迭代应使用micro run。源码级原理认证策略与统一网关认证策略跟随绑定地址当前版本的认证开关默认跟随监听地址cmd/micro/gateway/auth.go绑定到:8080、0.0.0.0、::等暴露地址时认证自动开启fail-safe绑定到127.0.0.1、localhost、::1等回环地址时认证自动关闭可通过--auth/--no-auth或环境变量MICRO_AUTHon|off强制覆盖静态机器令牌可通过--auth-token或MICRO_AUTH_TOKEN提供未提供时自动生成 24 字节随机令牌并在启动时打印一次。令牌提取优先级为Authorization: Bearer请求头 →?token查询参数供 SSE/浏览器链接使用→micro_tokencookie见extractToken。统一网关架构micro run与micro server/micro gateway共用同一套网关实现StartGateway见 cmd/micro/gateway/gateway.go统一提供 HTTP-to-RPC 转换、服务发现、健康检查与 Web UI。根据 ADR-010 统一网关决策记录此前两套独立网关实现存在代码重复、功能不同步、重复测试等问题统一后新功能如 MCP 集成两个命令同时受益开发与生产行为一致单一代码库便于测试与维护相同的 HTTP API、Web UI 与服务发现逻辑。网关统一提供的能力包括POST /api/{service}/{endpoint}JSON 请求响应、基于注册中心mdns/consul/etcd的自动服务发现、/health、/health/live、/health/ready健康检查、Web 控制台、新服务注册自动感知、JWT 认证登录/令牌/用户管理以及端点 Scopes 与 MCP 集成。编程方式启动网关网关也可以在自有 Go 代码中以编程方式启动注意这是 deprecated 的兼容封装新代码建议直接使用gateway/api包import go-micro.dev/v6/cmd/micro/server // 带认证启动推荐 gw, err : server.StartGateway(server.GatewayOptions{ Address: :8080, AuthEnabled: true, }) // 不带认证启动仅用于测试 gw, err : server.StartGateway(server.GatewayOptions{ Address: :8080, AuthEnabled: false, })当AuthEnabled为 true 时StartGateway会自动完成 JWT 密钥初始化InitJWTKeys、注册网关专属路由registerHandlers并挂载到gateway/api包提供的 HTTP 服务上。常用启动参数速查参数默认值说明--address:8080控制台/API 的 HTTP 监听地址MICRO_SERVER_ADDRESS--auth/--no-auth跟随地址强制开启/关闭认证MICRO_AUTH--auth-token自动生成静态 Bearer 令牌MICRO_AUTH_TOKEN--mcp-address空启用 MCP 网关的监听地址MICRO_MCP_ADDRESS--rate-limit/--rate-burst0 / 20MCP 限流每秒请求数 / 突发大小--audit关MCP 审计日志输出到 stdout--scope无MCP 工具 scope 要求toolscope1,scope2--circuit-breaker/--circuit-breaker-timeout0 / 30sMCP 熔断器最大失败次数 / 打开态超时--x402-*关MCP x402 支付收款地址、金额、网络、facilitator完整参数定义见 cmd/micro/gateway/server.go。相关阅读micro run 本地开发指南服务部署到服务器的完整指南CLI 与网关使用指南统一网关架构决策记录ADR-010micro CLI 完整命令说明本仓库【免费下载链接】go-microA Go agent harness and service framework项目地址: https://gitcode.com/gh_mirrors/go/go-micro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考