签名标题
这是一个可以在 REST 数据源上启用的选项.启用后,我们还需要用户输入签名机密(至少 32 个字符的字符串).启用此选项的效果是,对该数据源进行的每个 API 调用都将包含一个附加标头 X-Appsmith-Signature
, 其值是使用用户提供的机密签名的 JWT.以下是此签名的构造方式、JWT 包含的内容以及此标头对用户的意义的详细信息.
启用标题
为特定 REST 数据源启用签名标头有两个步骤:
设置
Send Appsmith signature header
为Yes
.设置
Session Details Signature Key
为至少 32 个字符长的随机字符串.
现在保存数据源,在此数据源之上构建的任何操作现在应该有一个 X-Appsmith-Signature
带有 JWT(如下所述)的标头作为它的值.
Contents of the JWT
JWT 由三部分组成.标头、有效负载和签名.标头和有效负载本质上是 base64 编码的 JSON 对象.
典型的标头 JSON 对象如下所示:
典型的有效负载 JSON 对象如下所示:
构建令牌和签名
现在,这两个被用来构造以下字符串(我们称之为主体):
alg
然后使用标头密钥中指定的算法对该正文进行签名.用于制作此签名的秘密是用户在数据源中配置的秘密.然后将此签名附加到上面的正文 "."
中.
签名的意义
签名将确保此 JWT 的真实性和完整性.
真实性: 真实性是令牌的属性,证明令牌来自 Appsmith.
如果没有访问用于创建签名的秘密,则无法重新创建签名.秘密签名仅对 Appsmith 和用户可用这一事实证明了签名和令牌的真实性.
完整性: 完整性是令牌不可篡改的属性.
除了秘密之外,签名是使用主体构造的.因此,如果标头或有效负载的内容或发生变化(导致令牌正文部分发生变化),则签名将不匹配.但是,篡改者无法重新创建签名,因为他们无法获得秘密.因此,只要秘密仍然是秘密,就可以确保完整性.
在https://jwt.io/introduction/了解有关 JWT 的更多信息.
Last updated