You need to enable JavaScript to run this app. 调用Bentley项目创建接口时自生成JWT报Invalid JWT错误
优惠活动
大模型
产品
解决方案
定价
更多

调用Bentley项目创建接口时自生成JWT报Invalid JWT错误

问题根因确认

你遇到的401 Invalid JWT报错确实和自行生成的Token缺失entitlements字段直接相关。
Bentley iTwin平台的Projects接口和工作区连接对应的product-settings-service接口校验逻辑不同:后者仅校验scope权限,因此你配置了对应scope后可以正常调用;但Projects接口会额外校验entitlements字段,确认请求主体是否有项目服务的访问授权,官方开发者控制台生成的Token会自动填充该字段,自行生成的Token如果缺失就会触发401报错,仅添加projects:read、projects:modifyscope无法绕过该校验。

解决步骤

  • 首先确认你创建的iTwin应用已经在开发者控制台中开通了Projects服务的访问权限,仅在Token中配置对应scope没有用,必须先完成应用和服务的关联绑定。
  • 生成Token时必须调用Bentley官方OIDC认证端点下发Token,不要手动拼接生成自定义JWT,只有官方下发的Token才会自动填充合规的entitlements、org(组织ID)等平台校验必填字段,客户端凭证流、授权码流都支持该字段下发。
  • 你提供的PowerShell请求头、参数配置均符合接口要求,修复Token问题后即可直接复用该脚本调用接口。
$url = "https://api.bentley.com/projects/"

$authVal = "Bearer $($oidcClientToken.access_token)"

$today = Get-Date -Format "yyyy-MM-dd"

$projectName = $today + " " + (Get-RandomString -Length 12 -Characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ")

$bodyCreate = ConvertTo-Json -Depth 4 @{
    project = @{
        displayName = $projectName
        projectNumber = $projectName
        industry = "Oil and Gas"
        projectType = "Offshore Structures"
        billingCountry = "US"
        status = "active"
        allowExternalTeamMembers = $true
    }
}

$resp5 = Invoke-RestMethod -ContentType "Application/Json" -Method Post -Uri $url -Body $bodyCreate -Headers @{'Authorization' = $authVal; 'Content-Type' = 'application/json'; 'Accept' = 'application/vnd.bentley.itwin-platform.v1+json' }

内容的提问来源于stack exchange,提问作者DaveBrumbaughAtBentley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 01:36:03