使用 Java 生成与 Postman 相同的 SHA-256 code_challenge

问题描述 投票:0回答:1

在 Postman v11.2.14-canary01 中处理新的

HTTP request
时,转到 Authorization 选项卡并为
Code Challenge Method
选择 SHA-256 并放置

6b890b254542c9de4603278153e1b127d21730d46ac2620e6e35514c

Code Verifier 字段中,我可以看到 https 调用显示:

code_challenge=EKhdok_1ZKtBrevixgZqXxEHxn5pQjKkFA4bTVOmyH4

我正在尝试用 Java 重新创建它。

        String text = "6b890b254542c9de4603278153e1b127d21730d46ac2620e6e35514c";
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
        byte[] hash = messageDigest.digest(text.getBytes(StandardCharsets.UTF_8));
        Base64.Encoder encoder = Base64.getEncoder();
        String value = encoder.encodeToString(hash);
        System.out.println("Result [" + value + "]");

结果

Result [EKhdok/1ZKtBrevixgZqXxEHxn5pQjKkFA4bTVOmyH4=]

结果不匹配。 应该使用哪些细节来“清理”结果?

java base64 sha256 http-authentication
1个回答
0
投票

它使用 Base64 URL 编码。改变

Base64.Encoder encoder = Base64.getEncoder();

Base64.Encoder encoder = Base64.getUrlEncoder();

通过这一改变,我得到了(如预期的那样)

Result [EKhdok_1ZKtBrevixgZqXxEHxn5pQjKkFA4bTVOmyH4=]
© www.soinside.com 2019 - 2024. All rights reserved.