JWT 通常包含一个受众声明。我在很多地方(文章、代码示例、规范本身)都读到,您必须检查该令牌是否适用于您而不是其他受众。
我很高兴接受这一点。我不打算构建任何将 JWT 发送给错误受众的东西。但我很好奇为什么拒绝它很重要。
您应该能够验证令牌是由您信任的身份验证服务器颁发的。所以你必须接受那里的说法不是捏造的。
我能想到的唯一风险是,如果身份验证服务器针对相同的声明针对不同的受众产生不同的值。除了糟糕的命名空间之外,我想不出会发生这种情况的原因。
例如
{
"aud": "foo",
"roles": ["admin"]
}
代替:
{
"aud": "foo",
"foo.roles": ["admin"]
}
也许这个问题可以更好地表述为:
如果我接受其他受众的(有效)JWT 令牌,会发生什么坏事?