我已经为 Azure DevOps 实现了一个 OAuth2 应用程序。我的网站要求用户(用户 A)使用以下 URL 授权该应用程序。 步骤1
https://app.vssps.visualstudio.com/oauth2/authorize?scope=vso.code_full (skipped the other parameters)
上面的URL工作正常,并在用户授权后返回一个code+userInfo。现在,我使用以下 API 调用通过从应用程序返回的代码传递了访问令牌。
https://app.vssps.visualstudio.com/oauth2/token
我可以使用以下 API 调用进一步获取与用户(用户 A )帐户关联的所有组织
步骤2
https://app.vssps.visualstudio.com/_apis/accounts?api-version=6.0-preview&memberId=xyz
现在我想获取特定组织内的存储库。为此,我进行了以下 API 调用。
步骤3
https://dev.azure.com/**organization_name**/_apis/git/repositories?api-version=5.0
avove URL 工作正常并返回到指定组织内的存储库。
到目前为止一切都很好。
现在另一个用户(用户 B)正在尝试连接我的应用程序,他可以授权该应用程序,并且我的应用程序可以获取该经过身份验证的用户帐户下的组织。例如一切都很好,直到步骤2。但它在步骤 3 上失败了,例如它无法获取用户(用户 B)组织内的存储库。步骤3中的API调用返回并出现以下错误
TF400813:用户无权访问此资源。
请帮忙。
为了进一步澄清,我怀疑问题出在经过身份验证的用户(用户 B )上,因为整个过程对于一个经过身份验证的用户(用户 A )来说工作正常,但对于其他用户(用户 B )来说则失败。所以第二个经过身份验证的用户一定有一些不同。但我不确定这是什么,因为我不是 Azure 人。
另请注意,当我使用用户 A 或用户 B 登录时,我可以查看我的组织/项目/存储库,也可以添加/删除组织/项目/存储库。 (我是组织主)
那么如果我能够使用登录用户查看我的组织/存储库,并且同一用户正在验证 OAuth 应用程序,那么为什么用户生成的访问令牌无权访问用户 B 帐户中的存储库?
另一种可能性:您安装的用户代理版本与您的 Azure DevOps 服务器不兼容。
就我而言,我下载了最新版本 (3.x),该版本更新得多,而且确实与我更旧的本地 Azure DevOps 服务器不兼容。
如果您遇到我的情况,尝试安装 2.195.2 版本,因为它是与 Visual Studio 2022 兼容的最低版本。