Java - 从请求 JSON 生成 JWS/JWT

Posted

技术标签:

【中文标题】Java - 从请求 JSON 生成 JWS/JWT【英文标题】:Java - JWS / JWT Generation from Request JSON 【发布时间】:2020-10-12 04:28:49 【问题描述】:

我正在为基于 content-type = application/jose 的 Web 服务开发集成客户端。

这意味着我必须以 JWS / JWT 的形式发送消息正文。现在,我回顾了 JWS 和 JWT,发现它由包含算法详细信息的 Header 和包含要传输的有效负载的有效负载组成,但我在互联网上没有看到任何实际有效负载编码的示例智威汤逊?我只看到 sub、iat、日期时间等字段。

我想知道,如果我的解码 JSON 请求正文是:


"instruction_id": "1",
"account_code": "1234",
...
...


那么在这种情况下,有效载荷是什么?我没有发现 JWS 和 JWT 之间有什么大的区别,它们都包括头、有效负载和签名(使用 header.payload 上的私钥或公钥应用)。

有人可以详细说明他们的实际区别吗?并回复我上面的有效载荷查询?

【问题讨论】:

但是曝光方已经向我们提供了文档,其中已经写到我们必须通过 JWS 与每个 API 请求。在请求和响应的示例中,它向我们展示了解码的 JSON,但希望在发送时将其编码为 JWT/JWS 密码。请建议 抱歉,我完全忽略了您的application/jose 要求。 你能帮帮我吗? :) payload:只要是 JSON 格式,您基本上可以将任何您想要的内容放入有效负载中。关于 JWT 与 JWS:***.com/questions/27640930/… 那么payload中的这些组件是什么?国际会计准则,分,国际空间站,经验。也必须放吗? 【参考方案1】:

JWT 代表“Json Web Token”,它代表某种形式的身份验证,以授权应用程序代表最终用户使用某些资源。

因此,您会看到这些声明“sub”:(主题)最终用户,“exp”:(到期)到期时间,“aud”:打算接收此令牌的资源服务器,“iss”:(发行者):创建令牌的身份验证服务器,iat:(发行时间):创建令牌的时间..等等,所有标准声明都代表了谈论授权/身份验证时的某些东西。无论如何,您可以添加您认为必要的其他自定义声明

但我认为问题在于您的用例不同,它可能与 JWE 相关,而不是与 JWT 相关。 尊重JWS是代表签名的标准

【讨论】:

感谢您的回复。他们提到每个 API 调用都必须在请求中包含 JWS,并应由接收参与者进行验证。。除此之外,他们还为我提供了编写这些声明的 JWT 规范。我实际上对是否必须以 JWS 密码或 JWT 发送请求正文 (JSON) 感到困惑?或者我必须使用 JWS 来编码 body 和 JWT 来生成令牌?如果我问错了什么,请纠正我? 请求中必须存在的 JWS 可能是 JWT 令牌,以允许接收参与者检查发出请求的用户是有效用户吗?还是JWT(payload)的内容必须包含请求本身的数据? 这是我的问题。我是否必须使用 JWS 来捆绑我的数据或使用 JWT 作为有效负载? 我从未见过使用 jwt 作为授权以外的一种发送数据的方式,进行 Rest API 调用的常用方法是使用需要执行操作的数据发出 http 请求正文或查询参数并从中获取,使用 Authorization 标头包含一个 JWT,其中包含有关最终用户和授权过程(到期时间、主题、颁发者等)的信息。当请求到达其目的地时,服务器在执行实际操作之前,将获取该令牌并对其进行验证。但我不知道你的要求是什么 如果我想在 JWT 中添加 JWS 怎么办?这可能吗?

以上是关于Java - 从请求 JSON 生成 JWS/JWT的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中带有JSON字符串的HTTP POST请求

从 JSON 生成 Java 类?

如何从 Json 文件生成 Java 类? [复制]

REST/JSON:如何生成示例请求?如何公开 API?

从java中的Json字符串生成聚合的Json数据

是否有通过 Java 从 XML 模式生成 JSON 模式的工具?