为公共客户获取具有授权代码授予(PKCE)的三足令牌

问题描述 投票:0回答:1

我正在构建一个 SPA 以连接到 AEC 数据模型。我正在遵循 APS 的此身份验证指南,但我无法使其正常工作。具体来说,我的问题在于“第 3 步”,我收到“403 Forbidden”错误。

完成这项工作有很多步骤,但我将尝试概述到目前为止我所做的一切:

创建应用程序

我已从“创建应用程序”模式成功创建了“桌面、移动、单页应用程序”。我得到了一个用于我的应用程序的“客户端 ID”,并且我已允许“API 访问”框中可能的所有 API,其中包括“AEC 数据模型 API”。在这个盒子里,写着:

高级 API 不适用于具有 PKCE 授予类型的授权代码。

如果我是正确的,“AEC 数据模型 API”不是高级 API,因为 “AEC 数据模型 API”不获取令牌,因此,这不应该是问题,但如果我是,请纠正我错了。

My SPA Application

定制集成

在“应用程序”中注册应用程序后,我将“客户端 ID”添加到我的组织自定义集成中。

enter image description here

OAuth 身份验证

我现在遵循此身份验证指南。

第 1 步:我创建一个代码挑战和一个代码验证器:

{
    "code_challenge": "eJy4IjlN3Pu8ob27lc07Qw5RESB8lkyhWQlZcdllJf8",
    "code_verifier": "tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE"
}

然后我将用户重定向到以下网址:

https://developer.api.autodesk.com/authentication/v2/authorize?client_id=WZJ7JVs9cnCJo70MpwNXbqoI4Y76eyG3RQqAkCUwx6rFjP5P&redirect_uri=http%3A%2F%2Flocalhost%3A5173&code_challenge=eJy4IjlN3Pu8 ob27lc07Qw5RESB8lkyhWQlZcdllJf8&nonce=12321321&prompt=login&method=S256&response_type=code&scope=data%3Aread&state=just-任何国家权利

第 2 步:我登录并完成身份验证流程,并成功收到返回的代码(与验证器一起显示):

{
    "code": "ePJW9yuMwW2cR1co-Xmxq_Qwx629KfmGXYMIaJaO",
    "code_verifier": "tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE"
}

第 3 步:我发出获取请求以获取访问代码。端点为https://developer.api.autodesk.com/authentication/v2/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)

我不知道我做错了什么,会是什么?

oauth-2.0 oauth autodesk-forge
1个回答
0
投票

获取的内容为:

令牌端点不需要 JSON,它需要“表单编码”,即

application/x-www-form-urlencoded

https://aps.autodesk.com/en/docs/oauth/v2/reference/http/gettoken-POST/#resource-information

数据格式:表单编码(请求); JSON(响应

我大胆突出显示; request 应该使用表单编码,而您将得到的 response 将是 JSON。

© www.soinside.com 2019 - 2024. All rights reserved.