【发布时间】:2022-02-07 21:10:15
【问题描述】:
我看到 JWT 令牌由 A-Z、a-Z、0-9 和特殊字符 - 和 _ 组成。我想知道 JWT 令牌中允许的字符列表?
【问题讨论】:
-
JWT 是base64 编码的。
-
base64url 编码!= base64 编码...
标签: jwt
我看到 JWT 令牌由 A-Z、a-Z、0-9 和特殊字符 - 和 _ 组成。我想知道 JWT 令牌中允许的字符列表?
【问题讨论】:
标签: jwt
来自JWT introduction:“输出是三个用点分隔的 Base64-URL 字符串”。
Base64 有一个number of different variants,具体取决于编码的使用位置。典型的 MIME base64 将使用 +/ 作为最后两个字符,但 Base64-URL (RFC 4648 §5) 旨在用于 URL 和文件名,因此请改用 -_。
因此,JWT 将使用字符 a–z、A–Z、0–9 和 -_.。或者,作为正则表达式:
[a-zA-Z0-9-_.]+
如果您想改进正则表达式以匹配所描述的格式:
^[a-zA-Z0-9-_]+\.[a-zA-Z0-9-_]+\.[a-zA-Z0-9-_]+$
根据您的正则表达式风格,\w 应该与 [a-zA-Z0-9_] 匹配,这样您也许可以使这看起来更整洁:
^[\w-]+\.[\w-]+\.[\w-]+$
【讨论】: