【问题标题】:Team Foundation Server API using Oauth provided by Azure Active Directory使用 Azure Active Directory 提供的 Oauth 的 Team Foundation Server API
【发布时间】:2017-02-22 00:25:29
【问题描述】:

我正在尝试编写一个应用程序,该应用程序将获取 Oauth 令牌并通过 API 与 TFS 通信。
我已经注册了一个应用程序 (https://app.vsaex.visualstudio.com),并且可以获得一个具有我需要的范围的 Oauth 令牌。

这个问题得到了 Microsoft 某人的回答,询问“其中一个帐户是由 Azure Active Directory 支持的吗?”

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9061abf8-7ee9-452f-99f1-2a84f8c16d85/vso-api-oauth2-and-multiple-vso-accounts?forum=TFService

这也是我正在经历的确切行为。我可以获得一个令牌并与我的个人 TFS 实例通信,但是当我尝试与 AD 支持的 TFS 通信时,我得到一个 401。

我确实尝试使用 AD Oauth,但它没有 VSO 的范围。 (https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/)

有谁知道我如何使用 Azure AD 中的 Oauth 对 TFS 服务器进行 API 调用?

【问题讨论】:

  • “AD 支持的 TFS”的详细含义是什么?当您说它与我的个人 TFS 实例对话时,您是在使用诸如 ((xxx.visualstudio.com) 还是 on-primse TFS(xx:8080/TFS) 之类的 vsts?
  • 我正在使用 TFS 的托管解决方案(因此 url 是 xxx.visualstudio.com)。我使用了“AD 支持的 TFS”这个术语,因为它被 MS 员工在这个问题的回复中的评论中使用:social.msdn.microsoft.com/Forums/vstudio/en-US/…
  • 根据我的测试,我得到了相同的结果,访问令牌可以访问 Visual Studio Team Services 帐户部分(帐户信息页面)中的所有 VSTS,但如果我以相同的访问权限访问 VSTS,则会得到 401 结果令牌,位于其他组织中的帐户部分。此外,我无法使用相同的备用帐户访问此 VSTS。

标签: azure tfs oauth azure-active-directory tfs-sdk


【解决方案1】:

即使使用相同的用户帐户(电子邮件地址),Microsoft 帐户(MSA)和 Azure AD(AAD)帐户在系统中也具有不同的身份。所以他们的访问令牌应该不同。

以我的账号为例: 我有一个带有 MSA(Microsoft 帐户)的个人 VSTS 帐户和一个带有(devtoolssupport)的 AAD 帐户。当我登录“devtoolssupport”并执行 OAuth 身份验证时,授权的应用程序仅列在“devtoolssupport”中,不适用于“Microsoft 帐户”。所以使用“Microsoft 帐户”对应用进行身份验证,您需要在此页面上选择“Microsoft 帐户”,然后再次执行 OAuth 身份验证。

【讨论】:

  • 那么,我该怎么做呢?用户将访问 https://.com,如果使用 VSTS Oauth,该站点将向 app.vssps.visualstudio.com/_signedin 发起挑战,如果使用 Azure AD,则向 login.microsoftonline.com/ 发起挑战。我想挑战 VSTS OAuth 令牌并为 visualstudio.com 提供资源,但失败了。
  • 除非这对 Visual Studio 或 Web UI 的实际 TFS 插件没有帮助。
猜你喜欢
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2016-10-16
  • 2020-11-17
  • 2014-01-06
  • 1970-01-01
  • 2017-11-06
相关资源
最近更新 更多