Azure DevOps OAuth2。 TF400813:用户无权访问此资源

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

我已经为 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 oauth-2.0 azure-devops-rest-api
2个回答
6
投票

我在这里找到了缺失的部分。

我必须转到组织的设置,如下面的 URL

https://dev.azure.com/my_organization_name/_settings/organizationPolicy

并选中应用程序连接策略下的第一个复选框,即第三方应用程序通过 OAuth 访问

通过选中此选项,我也可以获取用户 B 帐户下的存储库。

遗憾的是,微软没有这方面的文档。讨厌微软产品的另一个原因。


0
投票

另一种可能性:您安装的用户代理版本与您的 Azure DevOps 服务器不兼容。

就我而言,我下载了最新版本 (3.x),该版本更新得多,而且确实与我更旧的本地 Azure DevOps 服务器不兼容。

如果您遇到我的情况,尝试安装 2.195.2 版本,因为它是与 Visual Studio 2022 兼容的最低版本。

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