开发者

开发者

3 分钟阅读以 Markdown 格式查看 ↗

在 URnetwork 上可以构建三类东西,对应三种不同的凭证。选对哪一类是你要做的第一个决定,而且其中的差别并非表面功夫。

你要构建的是从这里开始凭证
连接到 URnetwork 的应用或设备SDK,然后是 SDK 导览一个账户 JWT,用它换取一个携带 clientId 的 JWT
经由 Device 使用 TCP、UDP、TLS/DTLS 或 Direct Sockets 的应用客户端套接字一台已初始化、有可用连接路径的 Device
针对你自己网络的自动化运营方 API你的网络 JWT 或 urn_ API key
人们登录使用、并把它接纳进自己网络的产品使用 URnetwork 登录(Sign in with URnetwork)签发给你的 OAuth client_id

真正要紧的分界是你在对谁的网络行事。使用 SDK 和运营方 API 时,是你在对自己的网络行事,用的是你持有并掌控的凭证。使用 URnetwork 登录则是一个人把你的软件接纳进他们的网络 — 那份凭证你从不持有,它由他们授予,他们也可以收回。

SDK

先看安装,然后用示例浏览页查找十二种语言的可执行程序。每种语言都有一份安装指南,以及一个 socket 目录,里面是可运行的 HTTP 客户端集成。

Go SDK、JS/WASM SDK 和 CGo ABI 共用同一个网络引擎。桌面语言包封装 CGo 模块;Android 使用 gomobile AAR,Swift 使用 Apple XCFramework。JavaScript 同时包含 Node 和浏览器示例,都使用一台托管 Device。

套接字讲解如何使用 Device 的用户态 TCP、UDP、TLS/DTLS 和 Direct Sockets 连接。应用无需安装系统 VPN 就能使用这些套接字。浏览器中的 DeviceRemote 使用其托管 Device 的数据包路径;它不需要一个归浏览器所有的 TUN 接口。

选择哪个绑定把各项取舍并排摆了出来。在写代码之前就做这个决定:它定下的是你的进程模型,而不只是你的语法。

运营方 API

URnetwork 背后的 HTTP API。它为 connect 协议完成引导,签发客户端用于认证的 JWT,并暴露网络赖以运转的撮合交易。每条路由和每个模式都在 /docs/api,由规范生成。

它的作用范围是你的网络。这个名字容易让人理解为它作用于整个网络;事实并非如此。

有一步几乎会绊倒所有人:/auth 路由返回的 JWT 不带 clientId,而 connect 协议要求 JWT 带有它。用 /network 路由来交换。一个网络就是一个全局唯一的子网(xyz.ur.network);clientId 是一个 16 字节的地址,等价于一个 IPv6 地址,以 UDID 形式表示。

使用 URnetwork 登录

让人们把你的应用或智能体接纳进他们的私有网络,使它能与他们在那里运行的其他一切协同工作。这项功能仍在开发中,尚未上线 — 目前已有哪些内容,见该页面本身。

MCP 服务器不是第四个类别。它是一个可以凭"使用 URnetwork 登录"令牌访问的资源服务器,也是这种模式的一个实际示例。

令牌边界

这两套凭证体系用互不相交的密钥集签名。这是一道安全边界,而不是一种惯例:"使用 URnetwork 登录"令牌不是平台凭证,在需要平台 JWT 的地方出示它,从构造上就注定失败。OAuth 访问令牌还绑定了受众 — 每个令牌只对恰好一个资源验证通过,在其他任何地方都会被拒绝。

只有一处获准的跨越,它是一座桥,而不是一条旁路:被接纳的应用用自己的 OAuth 令牌换取一个携带 clientId 的平台 JWT,其作用范围限定在它被接纳进的那个网络。这次交换是在服务器端做出的授权决定;没有任何一个令牌能在两处都验证通过。

如果你手里有两份凭证,而其中一份不起作用,原因通常就在这里。