基于PKCE授权码流程获取APS 3-Legged Token时遇403错误
总结:
最终发现是fetch请求错误。此外,在答案评论中发现,要使PKCE认证生效,需将code_challenge作为code_verifier发送至/token端点。
我正在构建对接AEC Data Model的SPA,遵循APS的PKCE认证指南,但无法成功实现,具体问题出在“步骤3”,收到“403 Forbidden”错误。
已完成的操作概述
创建应用
我已通过“创建应用”弹窗成功创建了一个“Desktop, Mobile, Single-Page App”,获取了应用的Client ID,并在“API Access”中启用了所有可用API,包括“AEC Data Model API”。该区域提示:
Premium APIs are unavailable for Authorization Code with PKCE grant type.
我认为“AEC Data Model API”并非高级API,因为该API不需要获取令牌,因此这不应成为问题,若我的理解有误请指正。

自定义集成
在“Applications”中注册应用后,我将Client ID添加到了组织的自定义集成中。

OAuth认证(PKCE流程)
我按照认证指南操作:
步骤1:生成code challenge和code verifier
{ "code_challenge": "eJy4IjlN3Pu8ob27lc07Qw5RESB8lkyhWQlZcdllJf8", "code_verifier": "tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE" }
随后将用户重定向至包含client_id、redirect_uri、code_challenge等参数的授权URL。
步骤2:获取授权code
完成登录认证流程后,成功获取到code:
{ "code": "ePJW9yuMwW2cR1co-Xmxq_Qwx629KfmGXYMIaJaO", "code_verifier": "tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE" }
步骤3:请求访问令牌
发起fetch请求获取访问令牌,端点为认证服务的/token地址,请求内容如下:
{ "method": "POST", "headers": { "Content-Type": "application/json; charset=UTF-8" }, "body": "{\"grant_type\":\"authorization_code\",\"client_id\":\"myapplicationclientidwhichihavehiddenhere\",\"code_verifier\":\"tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE\",\"code\":\"ePJW9yuMwW2cR1co-Xmxq_Qwx629KfmGXYMIaJaO\",\"redirect_uri\":\"http://localhost:5173\"}" }
请求响应为POST https://developer.api.autodesk.com/authentication/v2/token 403 (Forbidden)。
我不清楚哪里出现了问题,可能的原因是什么?
内容的提问来源于stack exchange,提问作者Ölavur Nón

