3

我正在尝试使用 OAuth 对 REST 调用进行身份验证,但我找不到任何关于此的示例。请善意地指导我(提供样本)。

我指的是微软的以下文档。

https://www.visualstudio.com/en-us/docs/integrate/get-started/rest/basics

我可以使用 NTLM 进行身份验证(下面是我使用的示例)。有相同的节点库(https://www.npmjs.com/package/httpntlm)。但是对于 OAuth,我需要类似的东西。

httpntlm.patch(options, function(err,res) {
            console.log("patch complete");
            console.log(res.body);
})
4

2 回答 2

4

您可以在 VSTS 中使用 OAuth 2.0 授权对 REST API 的访问。它目前仅适用于 VSTS,不支持 TFS2017。您还可以检查这个问题:TFS 2015 REST API Authentication。并且出现了相关的uservoice

首先,您将注册您的 Web 应用并从 Visual Studio Team Services 获取应用 ID。使用该应用 ID,您可以将您的用户发送到 Visual Studio Team Services,以授权您的应用访问他们的帐户。完成此操作后,您将使用该授权来获取该用户的访问令牌。当您代表该用户调用 Visual Studio Team Services API 时,您将使用该用户的访问令牌。

在此处输入图像描述

实现 OAuth 以在 GitHub 中调用 Visual Studio Team Services REST API 的 AC# 示例供您参考:vsts-dotnet-oauth-sample

于 2017-03-13T09:24:51.520 回答
0

我不确定您用于实现此目的的技术,但如果您的应用程序是 .Net/.Net Core MVC 应用程序,那么 Microsoft 提供了相同的示例代码:VSTS 示例代码 C#

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

  1. 在 VSTS 上注册您的应用程序,回调 url 指向您的 UI 应用程序上的回调路由。
  2. 在后端添加 Authorize 函数以调用 VSTS 授权端点。
  3. 在您想要连接到 VSTS API 的 UI 上有一个按钮/链接,将其指向后端的授权功能。从后端而不是 ui 调用 vsts 授权端点的原因是,vsts 授权返回 302 重定向响应,而 Angular 4+ 仍然有一个明确的方法来处理这个问题。.Net MVC 具有很好地处理它的 redirectreult 方法。
  4. 一旦调用授权,您将看到显示所有范围的接受/拒绝屏幕。
  5. 一旦用户接受它,他将重定向到指向您的 UI 的回调 url。
  6. 从 UI 中的回调 url 获取授权码,提取代码并将其传递给 API。
  7. API 将通过传递 Auth 代码和客户端密码来调用 vsts 令牌端点。
  8. API 将收到 Auth Token 和 Refresh Token。
  9. 使用 auth token 进行 VSTS api 调用并持久化刷新 token(有很多文章提到如何安全处理 token)。

就是这样,OAuth 流可以通过上述方式在 Angular 和 .Net Core 中实现。

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

请发表评论以获取示例回购。

于 2020-04-19T06:00:19.263 回答