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

在OpenID连接授权代码流中使用PKCE时需要client_secret吗?

傅树
2023-03-14

根据PKCE规范,OAuth提供者使用code\u验证器来避免中间人攻击。我的理解是,将OAuth代码交换为令牌是基于JavaScript的单页应用程序(SPA)的最佳选择。

当我用谷歌应用编程接口进行实验时,它说“client_secret不见了”。

这是HTTP请求和响应。

ID: 1地址:https://oauth2.googleapis.com/tokenHttp-Method: POST Content-Type: Application/x-www-form-urlencoded Headers:{Content-Type=[Application/x-www-form-urlencoded], Accept=[/]}有效负载:grant_type=authorization_code

ID:1响应代码:400编码:UTF-8内容类型:应用程序/json;字符集=utf-8标题:{接受范围=[无],Alt Svc=[h3-28=”:443;ma=2592000,h3-27=”:443;ma=2592000,h3-25=”:443;ma=2592000,h3-T050=“:443”;ma=2592000,h3-Q050=”:443;ma=2592000,h3-Q049=”:443;ma=2592000,h3-Q048=“:443”;ma=2592000,h3-Q046=”:443;ma=2592000 00,h3-Q043=“:443”;ma=2592000,quic=”:443;ma=2592000;v=“46,43”],缓存控制=[专用],内容类型=[应用程序/json;字符集=utf-8],日期=[Mon,2020年6月22日04:41:53 GMT],服务器=[HTTPServer2上的脚手架],传输编码=[chunked],变量=[Origin,Accept-encoding,Referer,X-Origin],X-Content-Type-Options=[nosniff],X-Frame-Options=[SAMEORIGIN],X-XSS-Protection=[0]}负载:{“错误”:“无效的\u请求”,“错误\u描述”:“缺少客户端\u机密”。}

我是否理解“传递code\u verifier时不需要client\u secret”错误,或者Google不支持PKCE,或者我是否在请求中遗漏了其他参数?请帮忙。

共有1个答案

慕俊迈
2023-03-14

我在尝试使用最新的单页应用程序标准时,也遇到了同样的问题。看看Google文档,它们的实现似乎仍然基于隐式流。

我验证了您可以发送response_type='令牌id_token'并成功获取令牌,尽管我也更喜欢使用授权代码流(PKCE)。

 类似资料:
  • 我有几个问题。 使用授权代码流时,我是否需要在客户端验证随机数?在一般的OAuth提供程序实现中,从授权代码获取访问令牌的过程只工作一次。由此看来,授权码流在不使用随机数的情况下,已经支持重放攻击了? 在web应用程序中使用授权代码流有什么好处?ID令牌是一种身份验证机制,而不是授权机制,据我所知,它用于验证哪个OpenID提供者正在为哪个中继方验证哪个用户。 但在授权代码流中, OAuth 2.

  • 编辑:为了澄清,获取授权代码按预期工作。这纯粹是将授权代码交换为失败的令牌的步骤。 我正在尝试使用PKCE流实现授权代码,以便使用spotify API进行身份验证。我知道这里有很多库,但我真的想自己实现它。我所说的流程是:https://developer.spotify.com/documentation/general/guides/authorization-guide/#authoriz

  • 我正面临着OpenId Connect的自定义实现。但是(总是有一个但是)我有一些疑问: 我理解获取acces_token和id_token的过程,除了OP向客户端提供authorization_code的步骤。如果它是通过重定向完成的(使用重定向uri) < li >最终用户能够看到授权码吗?它不会过期吗?想象一下,我们捕获了它,并在稍后(几天后)使用它,这是一个安全漏洞吗?令牌endpoint

  • 说明 微信授权码查询openidSDK。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9 类 请求参数类 请求参数 类名:\Yurun\PaySDK\Weixin\AuthCodeToOpenid\Request 属性 名称 类型 说明 $_apiMethod string 接口名称 $au

  • 我一直在广泛阅读有关OAuth和OpenID Connect的内容,但此问题专门涉及OAuth2资源所有者密码授予(又名OAuth2资源所有者凭据授予,又名OAuth2密码授予) 某些资源(例如Justin Richer的《OAuth2 in Action》一书)说不要使用OAuth2资源所有者密码授予进行身份验证-请参阅书中的第6.1.3节。 以下其他好资源都说我们可以使用OAuth2资源所有者

  • 尝试按照microsoft说明获取访问令牌。但是我得到了一个错误,因为它没有解。我做错了什么,这对我意味着什么?在此输入映像描述请求:https://log in . Microsoft online . com/{ tenant }/oauth 2/v 2.0/authorize * auth _ code:client _ id https://log in . Microsoft onlin