检测 Authorization Header 是 JWT 还是 OAUTH

Detect if Authorization Header is JWT or OAUTH

我的 servlet 收到授权 Header 作为“Bearer JWT_TOKEN”或“Bearer OAUTH_TOKEN”。

如何识别令牌是 JWT 还是 OAUTH?

不确定您所说的 OAUTH 令牌是什么意思,但要识别 JWT,您可以检查令牌是否包含由点分隔的三个部分,如果它是签名的 JWT,或者五个部分,如果它是加密的 JWT。

所以对于签名的 JWT 是这样的:

if (token.split("\.").length == 3) {
   // It's a JWT
}

如果你只有这两种token,而且你确定OAUTH token不是用两个点格式化的,那你就很容易区分这两种。

您可以做的另一件事是将令牌传递给 JWT 验证库并捕获任何异常。如果令牌不是 JWT,您将得到类似“格式错误的令牌异常”的信息。然后你可以假设它是一个 OAUTH 令牌。