guideNode.js 中的令牌端点

本文介绍了一个简单的 令牌端点 示例,用于在 Node.js 中创建 JSON Web Tokens (JWT)。CKEditor 云服务使用这些令牌来验证用户身份。

# 依赖项

两个示例都使用 jsonwebtoken 库来创建令牌,并使用 express 来创建 HTTP 端点。

npm install express jsonwebtoken

# 示例

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

# 实时协作功能

const express = require( 'express' );
const jwt = require( 'jsonwebtoken' );

const accessKey = 'w1lnWEN63FPKxBNmxHN7WpfW2IoYVYca5moqIUKfWesL1Ykwv34iR5xwfWLy';
const environmentId = 'LJRQ1bju55p6a47RwadH';

const app = express();

app.use( ( req, res, next ) => {
    res.setHeader( 'Access-Control-Allow-Origin', '*' );
    res.setHeader( 'Access-Control-Allow-Methods', 'GET' );

    next();
} );

app.get( '/', ( req, res ) => {
    const payload = {
        aud: environmentId,
        sub: 'user-123',
        user: {
            email: 'joe.doe@example.com',
            name: 'Joe Doe'
        },
        auth: {
            'collaboration': {
                '*': {
                    'role': 'writer'
                }
            }
        }
    };

    const result = jwt.sign( payload, accessKey, { algorithm: 'HS256', expiresIn: '24h' } );

    res.send( result );
} );

app.listen( 8080, () => console.log( 'Listening on port 8080' ) );

accessKeyenvironmentId 应替换为 CKEditor 生态系统客户仪表板 为 SaaS 提供的密钥,或 管理面板 为本地部署应用程序提供的密钥。用户数据可以从会话或数据库中获取。您无需添加 iat,因为 jwt.sign() 会自动添加它。

然后,您应该将令牌传递给客户端,例如通过发送纯文本字符串,或通过渲染包含此令牌的页面。如果用户未经身份验证,则令牌端点应返回错误或重定向到登录页面。此外,您应确保令牌通过加密通道发送。

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

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

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

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

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

const express = require( 'express' );
const jwt = require( 'jsonwebtoken' );

const SECRET_KEY = 'w1lnWEN63FPKxBNmxHN7WpfW2IoYVYca5moqIUKfWesL1Ykwv34iR5xwfWLy';

const app = express();

app.use( ( req, res, next ) => {
    res.setHeader( 'Access-Control-Allow-Origin', '*' );
    res.setHeader( 'Access-Control-Allow-Methods', 'GET' );

    next();
} );

app.get( '/', ( req, res ) => {
    const result = jwt.sign( {}, SECRET_KEY, { algorithm: 'HS256' } );

    res.send( result );
} );

app.listen( 8080, () => console.log( 'Listening on port 8080' ) );

如果您创建自己的令牌端点,请不要忘记在发送令牌之前验证用户身份。您可以使用 Passport 来执行此操作。

# 用法

通过运行以下命令启动服务器

node server

现在,您可以使用简单的请求获取令牌

https://127.0.0.1:8080/

# 示例响应

结果应为纯文本格式。

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJMSlJRMWJqdTU1cDZhNDdSd2FkSCIsImlhdCI6MTY0OTIyOTQyMiwic3ViIjoidXNlci0xMjMiLCJ1c2VyIjp7ImVtYWlsIjoiam9lLmRvZUBleGFtcGxlLmNvbSIsIm5hbWUiOiJKb2UgRG9lIn0sImF1dGgiOnsiY29sbGFib3JhdGlvbiI6eyIqIjp7InJvbGUiOiJ3cml0ZXIifX19fQ._V-HXKKHU1E-saZxk4JTvgXdh1I7793nCEK91ubSZHY

# 调试

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