oauth2.0 403 尝试 使用 客户 端 凭证 授权 类型 请求 外部 API 时 出错

yrefmtwq  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(122)

我 正在 尝试 从 我 的 流 请求 外部 API 上 的 GET/POST 操作 。 我 正在 使用 OAuth2 客户 端 凭据 授权 类型 进行 身份 验证 , 如 此处 所 述 。 但是 , 它 一直 给出 403 禁止 错误 :" 消息 " : " 用户 未 被 授权 访问 此 资源 , 并 被 显 式 拒绝 " 我 从 配置 XML 中 删除 了 刷新 标记 , 如 here 所 述 , 但 它 仍然 给出 相同 的 错误 。 HTTP 请求 配置 为 :

<http:request-config name="HTTPS_Request_configuration" doc:name="HTTP Request configuration" doc:id="abd3aa76-ab4e-4804-83e6-6b1ae984007a" >
    <http:request-connection host="testhost" maxConnections="-1" connectionIdleTimeout="6000" responseBufferSize="1024" protocol="HTTPS">
        <reconnection >
            <reconnect frequency="5000" count="5" />
        </reconnection>
        <http:authentication >
            <oauth:client-credentials-grant-type clientId="${secure::api.clientid}" clientSecret="${secure::api.clientsecret}" tokenUrl="https://testhost/tokens.path" scopes="document.read Documents.write" refreshTokenWhen="#[attributes.statusCode == 401]">
            </oauth:client-credentials-grant-type>
        </http:authentication>
    </http:request-connection>
</http:request-config>

中 的 每 一 个
同样 的 值 在 Postman 中 也 能 正常 工作 。 enter image description here
邮递 员 中 的 令牌 响应 :

{
"access_token": "~3000 character long string",
 "scope": "whatever is mentioned in the config",
 "expires_in": 300,
 "token_type": "Bearer"
}

格式
请 告知 配置 是否 有 任何 问题 , 或者 我 可以 进行 哪些 更改 以 获得 成功 响应 ?

ivqmmu1c

ivqmmu1c1#

令牌的URL看起来与屏幕截图不同,但由于它被屏蔽了,所以可能不是真实的的URL。作用域应该用逗号分隔。在HTTP配置中,是空格分隔的,并且在Postman屏幕截图中完全被屏蔽。屏幕截图通常不适合故障排除,除非是UI错误,否则不应该在Stackoverflow中使用它们。
由于您可能无法分享一些机密的细节,您应该通过比较两个HTTP请求(来自Mule和Postman)来自己进行故障排除,以了解可能的差异,并调整配置以匹配。不要使用屏幕截图,而是使用Postman的“代码”按钮并将请求复制为HTTP。
然后在Mule 4应用程序中更改日志配置以启用HTTP wire logging,这将把HTTP请求打印到日志中。
将这两个HTTP请求放在一起,并查找它们之间的差异。

相关问题