如何从C# Jose SDK的JWE.Encrypt方法获取符合要求的紧凑格式JWE令牌
解决方案
你当前得到JSON结构的JWE,是因为调用JWE.Encrypt()时传入了多接收者的JweRecipient数组参数,jose-jwt库针对多接收者场景默认输出JSON序列化格式的JWE,单接收者场景使用简化参数即可生成点分隔的紧凑格式令牌。
调整后的代码如下:
AnyJson anyJson = new AnyJson(); anyJson.page = 2; anyJson.filters = new Filters(); anyJson.filters.startDate = DateTime.Now.Date; anyJson.filters.endDate = DateTime.Now.Date; string key = "bXF9p18KmVjgyzv3lP6otbne1W8PLo6gEE287SMyjeI="; var payload = Newtonsoft.Json.JsonConvert.SerializeObject(anyJson); // 使用单接收者重载方法,直接输出紧凑格式JWE string token = JWE.Encrypt( payload, JweAlgorithm.A256KW, JweEncryption.A256GCM, Convert.FromBase64String(key) );
调整后生成的token即为[受保护头].[加密密钥].[IV].[密文].[标签]的5段点分隔格式,完全符合接口要求的结构。
内容的提问来源于stack exchange,提问作者Kryp2 Gemini
相关产品推荐
相关产品推荐

