在VSTS/TFS 2017中通过OAuth验证REST API

在VSTS/TFS 2017中通过OAuth验证REST API,rest,oauth,node-modules,azure-pipelines-build-task,azure-devops-rest-api,Rest,Oauth,Node Modules,Azure Pipelines Build Task,Azure Devops Rest Api,我正在尝试用OAuth验证REST调用,但我找不到任何与此相关的示例。请好心指导我(提供样品) 我指的是微软的以下文档 我可以使用NTLM对此进行验证(下面是我使用的示例)。有可用于相同()的节点库。但我需要类似的OAuth httpntlm.patch(options, function(err,res) { console.log("patch complete"); console.log(res.body); }) 您可以在VST中使用

我正在尝试用OAuth验证REST调用,但我找不到任何与此相关的示例。请好心指导我(提供样品)

我指的是微软的以下文档

我可以使用NTLM对此进行验证(下面是我使用的示例)。有可用于相同()的节点库。但我需要类似的OAuth

httpntlm.patch(options, function(err,res) {
            console.log("patch complete");
            console.log(res.body);
})
您可以在VST中使用。目前仅适用于VST,不支持TFS2017。您还可以检查以下问题:。而且还有一个相关的问题

首先,您将注册web应用程序并从Visual Studio获取应用程序ID 工作室团队服务。使用该应用程序ID,您将用户发送到 Visual Studio Team Services授权您的应用程序访问其 那里有账户。一旦他们这么做了,你就可以使用授权了 获取该用户的访问令牌。当您呼叫Visual Studio团队时 代表该用户的服务API,您将使用该用户的访问权限 代币


实现OAuth以调用GitHub中的Visual Studio Team Services REST API供您参考的C#示例:

我不确定您使用哪些技术来实现这一点,但如果您的应用程序是.Net/.Net核心MVC应用程序,则Microsoft提供了相同的示例代码:

然而,如果您的应用程序像我的、SPA(在angular上)和.Net Core后端一样,那么在这种情况下,没有文档清楚地描述哪些部分应该放在哪里以及如何实现OAuth流。为了回答这个问题,我通过以下方式实现了这一点:

  • 在VSTS上注册您的应用,回拨url指向UI应用程序上的回拨路由
  • 在后端添加Authorize函数以调用VSTS Authorize端点
  • 在您想要连接到VSTSAPI的UI上有一个按钮/链接,将其指向后端的授权功能。 从后端而不是ui调用vsts authorize endpoint的原因是,vsts authorize返回302重定向响应,angular 4+仍有明确的方法来处理此问题。NETMVC有一种重定向方法,可以很好地处理它
  • 调用authorize后,您将看到Accept/Deny屏幕,显示所有作用域
  • 一旦用户接受它,他将重定向到指向您的UI的回调url
  • 从UI中的回调url获取身份验证代码,提取代码并将其传递给API
  • API将通过传递身份验证代码和客户端密码来调用vsts令牌端点
  • API将接收身份验证令牌和刷新令牌
  • 使用auth-token进行VSTSAPI调用并持久化刷新令牌(有许多文章提到如何安全地处理令牌)
  • 也就是说,OAuth流可以通过上述方式在Angular和.Net内核中实现

    请注意,这是微软没有记录的东西,所以这种方法可能有缺陷,我愿意学习和纠正


    请评论以获取回购样本

    您的应用程序在哪个技术堆栈上?如何计算vsts api中的所有用户?有没有关于php的简单文档