【问题标题】:TFS REST API: How to "Make requests on behalf of others"?TFS REST API:如何“代表他人提出请求”?
【发布时间】:2017-02-12 09:10:56
【问题描述】:

我希望我的 VSTS 扩展(安装在本地 TFS2015.3)能够代表管理员/服务帐户执行特定请求(“代表他人提出请求”)

背景:我在我的扩展打字稿中操作(工作项)流程模板,特别是 GLOBALWORKFLOW(仅在团队项目级别),但 Web Access 中扩展的用户不是项目管理员,因此不允许他使用函数 updateWorkItemTypeDefinition() - 非项目管理员得到“拒绝访问”,即使我为该自定义组提供了所有可用权限(项目级 GLOBALWORKFLOW 的“编辑项目级信息”权限?仍然不适用于自定义组,仅适用于项目管理员帐户)。

看来我不得不冒充一个项目管理员/服务帐户,该帐户允许更改项目中的全局工作流

如何在本地 TFS 和 REST 的扩展打字稿代码中模拟(1. 不是 .NET 和 2. 不更改为基本身份验证,在其他地方已经看到该解决方案 - 但我很确定我不能要求更改在我的组织中)

感谢您的帮助

【问题讨论】:

  • 编辑:PAT 不是解决方案,因为我在本地工作 (2015.3)
  • 流程模板级别中的某些内容只有在用户具有某些集合级别权限时才能编辑。例如,字段和链接类型存储在集合级别,而不是项目级别,因此您需要比项目更高的权限。
  • @jessehouwing 没有坏处,如果我最终可以让我的 TFS 扩展来模拟服务帐户,那么即使是集合级服务帐户也可以

标签: rest tfs azure-devops tfs-2015


【解决方案1】:

您可以通过 vsts-node-api 模拟用户。

模拟用户的功能有很多,如Basic、NTLM、PWA(VSTS)等,你可以查看这些功能here

import * as vm from 'vso-node-api';

// your collection url
var collectionUrl = "XXX";


let authHandler = vm.getNtlmHandler("[user name]","[password]","[workstation optional]","[domain optional]"); 

var connect = new vm.WebApi(collectionUrl, authHandler);   

There 是您可以参考的示例。

【讨论】:

  • AFAIK 本地 TFS2015 没有个人访问令牌。从 TFS15RC1 开始,它在 VSO 和本地部署中
  • @FerdiÖztürk 我更新了我的答案,有很多模拟用户的功能,对于本地 TFS,您可以使用 getNtlmHandler 功能。
  • THXs 更新,我想尝试一下,但在我的 .TS 中导入 vso-node-api 时遇到问题。步骤: 1. npm i vso-node-api 2. 引用/// 3. import vsonode = require(" vso-node-api"); - 没用。你能告诉我如何正确导入 vso-node-api 模块或者我缺少什么吗? (不使用类型安装,因为 .d.ts 已经在 vso-node-apis node_module 文件夹中)
  • @FerdiÖztürk 使用此代码: import * as vm from '../node_modules/vso-node-api/webapi';
  • THX 运行良好,求帮助!备注:对于带有 vso-node-api 的 UpdateWorkItemTypeDefinition() 我不能再使用来自 ("TFS/WorkItemTracking/Contracts") 的接口,切换到 import WorkItemTrackingInterfaces = require("./node_modules/vso-node-api/interfaces/WorkItemTrac‌​国王接口");我仍然收到错误,因为它无法从 vso-node-api 中的 WorkItemTrackingApi.d.ts 解析“NodeJS.ReadableStream” - 我在这里缺少什么?输出:错误 TS2503 找不到命名空间“NodeJS”。错误构建:找不到命名空间“NodeJS”。
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2018-10-21
  • 2014-06-25
  • 1970-01-01
  • 2014-03-20
  • 2021-07-20
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多