在 Postman 中使用 Raw 格式测试 Google API OAuth2 时出错 "java.security.SignatureException: Invalid signature for token"

Error "java.security.SignatureException: Invalid signature for token" while testing Google API OAuth2 using Raw format in Postman

请在下面找到有关实施 SAP-Gmail 集成的完整详细信息。

要求: 使用 OAuth2 的 SAP-GMail 集成

流程: 我创建了服务帐户并遵循了 GoogleAPI OAuth2 - 服务帐户博客中定义的以下标准程序。

https://developers.google.com/identity/protocols/oauth2/service-account

问题: 从 SAP 访问 googleapi for Oauth 2 时,数据以原始格式推送。这给出了错误“java.security.SignatureException:令牌的无效签名”。请在下面找到错误的屏幕截图。

Google API OAuth error

调查结果: 以下是我在邮递员中测试 API 时的调查结果。

  1. API 成功:

如果我在邮递员中使用 Body -> x-www-form-urlencoded 选项卡,那么我将成功获得访问令牌。 使用下面显示的 HTTP 代码构建。

邮递员截图1: Postman Success

HTTP 版本 1: Http Build 1

  1. 原始格式 API 失败:

如果我在 postman 中使用 Body-> Raw 选项卡,那么我会收到下面显示的 HTTP 代码构建的错误。

邮递员截图2: Postman error Postman header 2

HTTP 版本 2: Http build 2

  1. 如果你能看到上面的 HTTP 代码在两者中构建,那么你会发现这两个 HTTP 代码很相似,但第一种模式有效,第二种模式(原始格式)无效。

根本原因: 我在验证错误时发现了一个问题,当我以 Raw 格式发布数据时,“+”以某种方式从 JWToken 签名中删除。在错误屏幕截图中突出显示。

这个小错误造成了麻烦,不允许创建令牌。

所以你能帮我解决这个 Raw 格式的问题吗,因为 SAP 支持 Raw 格式发布数据。

此致, 卡兰

最后我自己找到了上述查询的解决方案。

所以实际上在 Postman 中,选项卡“x-www-form-urlencoded”有一小段背景代码,它将纯文本编码为 URL 使用字符集“UTF-8”编码字符串。

此 URL 编码逻辑将许多特殊字符(如“=”替换为“%3D”)。

解法:- 因此,在将 OAuth2 的原始数据发送到 Google API 时,JsonWebToken 字符串需要 URL 使用字符集“UTF-8”进行编码,正如 Google[= 所期望的那样22=].

此致, 卡兰 K