JWKS中的"kid"可以只是一串数字吗,kid最多可以容纳多少个字符?

Can "kid" in JWKS be just string of numbers, and what is the maximum number of characters kid can hold?

我正在尝试验证存储在资源服务器中的 JWKS。我实施的检查之一是检查我从 JWT 解码的孩子,并在配置的资源服务器中检查它。

我通过了 JWK RFC 的“孩子”。在 rfc 中提到 kid 是区分大小写的字符串。但是从文档中不清楚,孩子可以持有什么价值观。孩子只在字符串中包含所有数字字符是否有效?还有那个孩子能容纳的字符串中字符数的最大限制是多少。

它实际上可以是任何类型的字符串,只要它对于 JWKS 中的每个键都是唯一的。 根据 RFC7517:

The structure of the "kid" value is unspecified.

我见过 uuid、数字、时间戳和 thumbprints(密钥的哈希值)用作 kid

A JWK thumbprint can also be used as a key identifier which is practically guaranteed to be unique.
from (https://connect2id.com/products/nimbus-jose-jwt/examples/jwk-thumbprints)

关于kid的长度,RFC中没有提到限制,但是JWK是一个JSON对象,kid通常也是[的一部分=18=]:

An implementation may set limits on the length and character contents of strings.

因此理论上它会受到实现的限制,但实际上,当您使用适合唯一标识符的任何合理大小时,您不会遇到任何严重的限制。