package org.sxkj.resource.util; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Map; /** * OnlyOffice JWT令牌生成工具类 *

* 用于生成OnlyOffice Document Server所需的JWT令牌, * 密钥通过Nacos配置中心统一管理。 *

* * @author sxkj */ @Slf4j @Component public class OnlyofficeJwt { /** * JWT令牌签名密钥,从Nacos配置读取 */ @Value("${onlyoffice.token-secret:ztzf-wv5d0-kx5xo-dx2w2-xpx5q}") private String tokenSecret; /** * 生成JWT令牌并将令牌添加到配置Map中 *

* 使用HMAC256算法对OnlyOffice配置进行签名, * 生成令牌后将其放入config的token字段。 *

* * @param config OnlyOffice编辑器配置Map,包含document、editorConfig等信息 * @return 添加了token字段的配置Map */ public Map getToken(Map config) { String token = ""; try { // 1. 使用配置的密钥创建HMAC256签名算法 Algorithm algorithm = Algorithm.HMAC256(tokenSecret); // 2. 基于config负载生成JWT令牌 token = JWT.create() .withPayload(config) .sign(algorithm); } catch (Exception e) { log.error("生成OnlyOffice JWT令牌失败: {}", e.getMessage(), e); token = ""; } // 3. 将生成的令牌放入配置中 config.put("token", token); return config; } }