naisi_create_access_token
创建访问令牌。
SaaS 模式下 payload 必须显式包含 int 型 tenant_code:0 表示平台作用域,正整数须获租户许可;已有可信租户时不得跨租户签发。 entcustom 模式不要求业务传入 tenant_code,忽略该字段且不建立租户绑定。 本函数不会建立当前请求的可信租户上下文,失败返回 false。
函数签名
function naisi_create_access_token(string $client_mark, array $payload, string $ip, string $salt, int $expired): false|string
调用前提
应用入口先调用 naisi_is_ext_license_valid 并确认返回 true。认证 Agent 发布的许可与 heartbeat 快照,并建立或复用本请求的 BASIC 证明;不会读取许可文件或检查当前 Host。
授权类别:LICENSE_EXPLICIT_TENANT;执行模式:BASIC。许可不代替登录、租户或权限上下文;身份与数据要求见本页参数及用途说明。
参数
$client_mark
- 类型:
string - 必填:是
- 默认值:无
- 方向:输入参数。
固定 18 位 [a-z0-9] 标识:11 位设备摘要、6 位可重复随机字符、1 位校验字符。
$payload
- 类型:
array - 必填:是
- 默认值:无
- 方向:输入参数。
需要签发、编码或认证的载荷数据;访问令牌 identity 只接受五个严格小写身份名,permission 必须为非空字符串。
$ip
- 类型:
string - 必填:是
- 默认值:无
- 方向:输入参数。
需要检查、分类或绑定的 IPv4 或 IPv6 地址。
$salt
- 类型:
string - 必填:是
- 默认值:无
- 方向:输入参数。
恰好 16 字节的业务盐;密钥由扩展从内部 AES 密钥库随机选择。
$expired
- 类型:
int - 必填:是
- 默认值:无
- 方向:输入参数。
令牌的过期时间或有效期秒数,具体语义由令牌协议规定。
返回值
类型:false|string
成功时返回结果字符串,失败时返回 false。
调用示例
当前请求须满足上方调用前提;请检查实际返回值和引用输出,随机结果及数据包内容以运行环境为准。
// 先在当前请求完成许可验证;client mark 来自已验证的客户端信息。
$payload = ['uid' => 100000006, 'mark' => '69f462ee2decd40ec12d',
'identity' => 'root', 'permission' => 'order.read', 'tenant_code' => 0];
$salt = '1234567890abcdef'; // 恰好 16 字节,验证端须使用相同值
$token = naisi_create_access_token($clientMark, $payload, $ip, $salt, 1800);
if ($token === false) { throw new RuntimeException('签发失败'); }
升级说明
当前签名用 16 字节的 $salt 字符串替代 $encryption_config 数组;密钥由扩展从内部 AES 密钥库选择。签发端和验证端须使用相同业务盐。旧调用需修改,已有令牌或 Credential 应重新签发并验证兼容性。
版本信息
- 自版本:
1.0.6 - 实现模块:
auth - 授权类别:
LICENSE_EXPLICIT_TENANT/BASIC - 失败回退:
false - 文档同步:
2026-10-18