当前位置: 首页 > 知识库问答 >
问题:

邮递员用错了(胡说八道?)OAuth2中的代码在Keyclope服务器上流动

傅增
2023-03-14

我试图使用Postman(版本7.20.0-linux5.5.8-200.fc31.x86_64/x64)对Keycloak 9.0.0服务器使用OAuth2.0授权代码流进行身份验证,该服务器由Google作为IdP支持。

邮递员正在将以下信息发送到/令牌endpoint尝试将代码交换为访问/刷新令牌时:

grant_type:    authorization_code
code:          4/xgFPM8rkZXA1pWguPMHPKg8GS3BrI7whtmSq2U2K4_4Cy62m10y2l3IQp3KuiLRyaLaZWKCUiGJGEWVJ9K4zcTc
redirect_uri:  http://localhost:3002
client_id:     mission-control
client_secret: 3cc09c80-••••-••••-••••-••••••••

这在KeyCloak中失败,并在Postman控制台中确认了以下错误:

POST /auth/realms/test-realm/protocol/openid-connect/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: PostmanRuntime/7.23.0
Accept: */*
Cache-Control: no-cache
Postman-Token: f2cfc8be-a911-4bc6-b5be-dbfab46d3a56
Host: localhost:8080
Accept-Encoding: gzip, deflate, br
Content-Length: 246
Connection: keep-alive
grant_type=authorization_code&code=4%2FxgFPM8rkZXA1pWguPMHPKg8GS3BrI7whtmSq2U2K4_4Cy62m10y2l3IQp3KuiLRyaLaZWKCUiGJGEWVJ9K4zcTc&redirect_uri=http%3A%2F%2Flocalhost%3A3002&client_id=mission-control&client_secret=3cc09c80-••••-••••-••••-••••••••
HTTP/1.1 400
Connection: keep-alive
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json
Content-Length: 62
Date: Fri, 13 Mar 2020 08:36:02 GMT
{"error":"invalid_grant","error_description":"Code not valid"}

密钥斗篷日志显示此令牌格式错误:

keycloak_1  | 09:53:23,219 WARN  [org.keycloak.protocol.oidc.utils.OAuth2CodeParser] (default task-35) Invalid format of the code
keycloak_1  | 09:53:23,219 WARN  [org.keycloak.events] (default task-35) type=CODE_TO_TOKEN_ERROR, realmId=Test Realm, clientId=mission-control, userId=null, ipAddress=172.20.0.1, error=invalid_code, grant_type=authorization_code, client_auth_method=client-secret

为了检查Keyclope或Postman是否有错,我在Netcat的帮助下在CLI上执行了相同的步骤:

在CLI上,在netcat的帮助下,我可以成功地穿过流,我看到了不同的令牌格式:

>

在我的浏览器中打开这个http://localhost:8080/auth/realms/test-领域/协议/openid连接/身份验证?客户号=任务控制

我不知道邮递员OAuth流从响应体中获取“代码”的位置,它用于将代码发送到令牌交换endpoint。令牌的区别很明显,当手动遍历它时(相同的客户端,相同的令牌,相同的oAuth2服务器),代码会像这样松动:

3b9ac786-f9d1-40f9-b884-35e17b2fa756.70a3be09-8edf-47ed-9803-d08550a07faa.8794bba2-6f2b-4512-8bd7-6d5073852d1c

当使用Postman时,它会将其作为代码发送:

4/xgFPM8rkZXA1pWguPMHPKg8GS3BrI7whtmSq2U2K4_4Cy62m10y2l3IQp3KuiLRyaLaZWKCUiGJGEWVJ9K4zcTc

我该怎么做才能让邮递员接受回电?代码形成URL?

共有1个答案

东郭弘方
2023-03-14

callback_uri和令牌OAuth服务器终结点位于同一(localhost)域时,这是Postman中确认的错误。

  • https://github.com/postmanlabs/postman-app-support/issues/7105

更新:此问题已于2020年9月修复。

 类似资料:
  • 这个GETendpoint有一些问题。由于某种原因,调用状态500内部服务器错误,主体为空。 这是GET调用的代码: titulosPagarService。pesquisar()返回一个JpaRepository。findAll()和titulosPagar的完整列表。 sysoutPrint显示它获取了由TitulosPagar对象生成的列表: 但在邮递员我得到了一个空体和500内部服务器错误

  • 我知道像这样的帖子肯定有1000篇,但我到处都找不到错误,所以我希望你们能看看,如果你们注意到我遗漏了什么,告诉我。 令牌类 实体类 应用代理 API调用 OkHttp输出的内容 -- 它返回 这是复制到邮递员的值 邮差 所以邮递员给我OK,我的应用程序给我500。我检查了所有值,但找不到错误:P

  • 问题内容: 我正在使用邮递员与elasticsearch服务器进行通信,当我尝试与我的elasticsearch服务器连接时,我在邮递员中收到错误消息。我哪里出问题了?这是我的代码。 我已尝试与服务器通信,但我一直收到此错误 问题答案: 好像您使用的是Elasticsearch 7.0版。由于Elasticsearch每个索引不再支持一种以上的映射类型,因此不再需要映射名称,并且此版本中不应提供该

  • 有三种服务: 用户服务 发现服务 >服务授权>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 我已配置eureka服务器,该服务器已启动并运行,并且我已向以下用户服务注册: 应用属性(用户服务) 我可以看到注册的用户服务,这是可以的Spring Boot应用程序

  • 在部署Meamapp时,mongoDB在本地节点上工作正常server.js但当我部署到heroku时,它显示错误 2019-06-04T02:49:12.401001 00:00 heroku[web.1]:状态从up更改为Start 2019-06-04T02:49:13.706279 00:00 heroku[web.1]:使用SIGTERM停止所有进程 2019-06-04T02:49:1

  • 我想上传一个图像文件。当我调用我的API上传文件使用postman,得到的错误,如. 我无法将此文件发布到我的Laravel控制器。如何在Laravel中发布文件。有人能帮我解决这个问题吗? 这是我的控制器功能, 在这一行