根据https://jwt.io,JSON Web Tokens应通过以下标头传递:
Authorization Bearer <token>
我也希望将JSON Web令牌用于我的客户端API密钥。
如果每个客户端使用不同的密钥来编码JSON Web令牌,我怎么知道用于解码令牌的密钥?在为API使用JSON Web令牌时,人们通常如何处理这个问题?
我考虑过为所有请求使用单个密钥,但这意味着如果该密钥遭到破坏并且我必须更新它 - 任何使用我的API的人都必须获得一个新的Web令牌。
答案 0 :(得分:0)
您可以考虑两种使用方案。在fisrt中,您需要在客户端获取凭据后发出JWT,第二个客户端构建JWT并使用其密钥对其进行签名。
从服务器发布JWT
在这种情况下,发布JWT的服务会验证请求者的身份,例如需要先前提供的用户和密码。
JWT将在sub
(主题)声明中包含客户端标识符。您可以设置aud
(受众群体)以将令牌的使用情况设置为您的API,而不是前端。您也可以设置自定义声明
所有令牌都使用相同的密钥签名。它可能与用于签署前端令牌的密钥不同。如果您需要aClient验证JWT
,请使用密钥对客户问题JWT
在这种情况下,每个客户端都有自己的秘密,或者如果使用不对称密钥,则注册了一个与其拥有的私钥对应的公钥
已生成密钥并通过管理控制台
共享密钥 JWT的sub
声明确定了作为JWT主题的主体。服务器将使用客户端的密钥/公钥验证签名。
如果您还使用JWT作为前端,iss
(发行人)声明允许区分您发出的或由第三方发行的令牌
注意:JWT在RFC 7519中定义。建议使用承载令牌,但这些令牌不是强制性的