gpt4 book ai didi

java - 检查不记名 token 是否为 jwt

转载 作者:行者123 更新时间:2023-12-05 00:45:51 24 4
gpt4 key购买 nike

我有两种类型的 token 用于 http 请求。一个在授权 header 中有一个 JWT token ,另一个有一个固定长度的 oauth token 。根据 token 的类型,我想执行一些操作。如何区分它们?

我试过了

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args) {

String pattern="^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.^[A-Za-z0-9-_.+/=]*$";
String line="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MTYyMzkwMjJ9tbD.epxpstvGdW8TC3G8zg4B6rUYAOvfzdceoH48wgRQ";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find( )) { //is jwt
System.out.println("jwt token");
}else {
System.out.println("NOt jwt");
}
}
}

但这并没有按预期工作。有没有这样做的图书馆?或者我们可以修改上面的正则表达式吗?

最佳答案

您可以采用其他方法。一个 JWT token 包含三个部分。包含类型和算法、有效负载和签名的 header 信息。 Header 和 Body 部分是 Base64 编码的。如果您解码标题部分,您将使用 token 类型。

您的示例 token 是 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MTYyMzkwMjJ9tbD.epxpstvGdW8TC3G8zg4B6rUYAOvfzdceoH48wgRQ

所以标题部分是 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9解码后你会得到 {"alg":"HS256","typ":"JWT"}从解码后的值可以判断它是否是 jwt token

关于java - 检查不记名 token 是否为 jwt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62750614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com