gpt4 book ai didi

java - 从 oauth2 JDBCTokenStore 反序列化 token 字段

转载 作者:行者123 更新时间:2023-12-02 03:34:07 39 4
gpt4 key购买 nike

我用过 JDBCTokenStore作为我的 oauth2 身份验证 token 的主要 token 存储。通常,当请求通过 Spring Java 应用程序时,我们可以轻松地将 token 解析为其 access_token 字符串形式,因为我们使用的是 Spring。

问题出在另一个应用程序正在访问 oauth 访问 token token 字段时。他们似乎无法将 BLOB/bytea token 字段转换为字符串并使用该字符串进行比较。

这里是访问 token 存储为 bytea token

enter image description here

这是来 self 们的 Spring Java 应用程序的 access_token

enter image description here

我们如何将 bytea token 从 Postgres 转换为其字符串形式?

最佳答案

你搞错了。 token_id 是 spring oauth2 配置创建的实际 access_token。在将 token_id 存储到持久存储(例如 Postgresql)之前,生成的 token_id 会通过 MD5 进行消化。可以在这里找到。

您始终可以使用encode来自 PostgreSQL。但是我非常怀疑你是否可以轻松解析

如果您希望其他应用程序将其翻译/解码回其常规字符串形式。你必须使用这个。

   String token_id =  "ceb589c0-8a01-4513-96d9-6ed10d6f8c77";

MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
}
catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("MD5 algorithm not available. Fatal (should be in the JDK).");
}

try {
byte[] bytes = digest.digest(token_id.getBytes("UTF-8"));
System.out.println(String.format("%032x", new BigInteger(1, bytes))) ;
}
catch (UnsupportedEncodingException e) {
throw new IllegalStateException("UTF-8 encoding not available. Fatal (should be in the JDK).");
}

话虽这么说。您必须让其他应用程序使用某种方法,以便您将其转换回您从 Spring oauth2 收到的 access_token

关于java - 从 oauth2 JDBCTokenStore 反序列化 token 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652336/

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