指南PHP 中的令牌端点

本文介绍了在 PHP 中实现的用于创建 JSON Web 令牌 (JWT) 的简单令牌端点示例。CKEditor 云服务使用这些令牌来验证用户身份。

# 依赖项

两个示例都使用firebase/php-jwt库来创建令牌。

composer require firebase/php-jwt

# 示例

在创建用于与协作集成的令牌端点时,令牌有效载荷应包含环境 ID 和用户数据。

# 实时协作功能

<?php
require __DIR__ . '/vendor/autoload.php';

use \Firebase\JWT\JWT;

$accessKey = 'w1lnWEN63FPKxBNmxHN7WpfW2IoYVYca5moqIUKfWesL1Ykwv34iR5xwfWLy';
$environmentId = 'LJRQ1bju55p6a47RwadH';

$payload = array(
    'aud' => $environmentId,
    'iat' => time(),
    'sub' => 'user-123',
    'user' => array(
        'email' => 'joe.doe@example.com',
        'name' => 'Joe Doe'
    ),
    'auth' => array(
        'collaboration' => array(
            '*' => array(
                'role' => 'writer',
            )
        )
    )
);

$jwt = JWT::encode($payload, $accessKey, 'HS256');

// Here we are printing the token to the console. In a real usage scenario
// it should be returned in an HTTP response of the token endpoint.
echo $jwt;
?>

$accessKey$environmentId 应替换为由CKEditor 生态系统客户仪表盘(对于 SaaS)或由管理面板(对于本地部署应用程序)提供的密钥。用户数据可以从会话或数据库中获取。
然后,您应将令牌传递给客户端,例如通过发送普通字符串或渲染包含此令牌的页面。如果用户未经身份验证,则令牌端点应返回错误或重定向到登录页面。此外,您应确保通过加密通道发送令牌。

# Easy Image、导出为 PDF 和导入和导出为 Word

Easy Image 和导出为 Word/PDF 功能的令牌端点不需要添加用户数据。因此,您可以跳过令牌有效载荷中的 userauth 属性。

# 本地部署的导出为 PDF 和导入和导出为 Word

本地部署的 PDF 转换器和 DOCX 转换器的令牌不需要任何额外的声明,因此您可以使用空有效载荷创建令牌。

在此实现中,accessKey 已替换为 SECRET_KEY - 在导入和导出为 Word/导出为 PDF本地部署实例安装期间设置的变量。

<?php
require __DIR__ . '/vendor/autoload.php';

use \Firebase\JWT\JWT;

$secretKey = 'w1lnWEN63FPKxBNmxHN7WpfW2IoYVYca5moqIUKfWesL1Ykwv34iR5xwfWLy';

$payload = array(
    'iat' => time()
);

$jwt = JWT::encode($payload, $secretKey, 'HS256');

// Here we are printing the token to the console. In a real usage scenario
// it should be returned in an HTTP response of the token endpoint.
echo $jwt;
?>

如果您创建自己的令牌端点,请不要忘记在发送令牌之前验证用户身份。

# 示例响应

结果应为纯文本格式。

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJMSlJRMWJqdTU1cDZhNDdSd2FkSCIsImlhdCI6MTY0OTIyOTQyMiwic3ViIjoidXNlci0xMjMiLCJ1c2VyIjp7ImVtYWlsIjoiam9lLmRvZUBleGFtcGxlLmNvbSIsIm5hbWUiOiJKb2UgRG9lIn0sImF1dGgiOnsiY29sbGFib3JhdGlvbiI6eyIqIjp7InJvbGUiOiJ3cml0ZXIifX19fQ._V-HXKKHU1E-saZxk4JTvgXdh1I7793nCEK91ubSZHY

# 调试

出于调试目的,可以使用jwt.io