动态修改Azure DevOps区域路径或迭代路径的继承权限(Inhertiance)

news2024/11/18 11:23:43

Contents

  • 1. 场景描述
  • 2. 解决方案
    • 2.1 更改继承的接口:ChangeInhertiance
    • 2.2 获取区域路径的接口:ClassificationNodes

1. 场景描述

客户使用工作项模板,定制了一个设计变更流程,需要在不同的阶段(流程状态)控制工作项的更改权限。我们知道,在Azure DevOps Server中,控制工作项权限的唯一功能是区域路径,因此需要利用区域路径来动态配置人员权限。

我们采取的方案是,用户发起一个新的变更流程时,系统自动创建一个对应的区域路径,例如新增的区域路径是“团队项目名称/设计变更/1001”,并且将新的工作项设置为这个区域路径;同时,根据业务逻辑,当工作项状态变化(流程前进或倒退)时,系统自动配置不同人员对这个区域路径的权限。例如流程为“新建 > 核查 > 审核 > 关闭”,当状况为核查时,系统配置核查人员的权限;当状况为审核时,系统在区域路径中配置审核人员的权限。

按照上面的方案,我们需求自动创建对应的区域路径,并且需要取消新建区域路径的继承权限,否则就无法实现权限与状态一致的目标。
由于设置区域路径继承权限的方法比较特殊,本文专门在下面的方案中做一个说明。

2. 解决方案

2.1 更改继承的接口:ChangeInhertiance

  • 接口名称
    • POST http://server/collection/ded5bae5-a2f3-4b4e-80e6-44a5439654bf/_api/_security/ChangeInheritance
    • URL 参数:
      • permissionSet:权限类型的GUID,这是一个固定值,为“83e28ad4-2d72-4ceb-97b0-c7726d5502c3”
      • token:区域路径的唯一标识,示例为“vstfs%3A%2F%2F%2FClassification%2FNode%2Fe485a5cd-8a0d-4610-8d6b-199a5e60a637”,其中的GUID就是区域路径的唯一标识,可以通过后面介绍的接口获取
      • inheritPermissions:是否继承,这是一个布尔变量,值为false或true
  • 完成的示例为:
http://server/collection/ded5bae5-a2f3-4b4e-80e6-44a5439654bf/_api/_security/ChangeInheritance?
permissionSet=83e28ad4-2d72-4ceb-97b0-c7726d5502c3&
token=vstfs%3A%2F%2F%2FClassification%2FNode%2Fe485a5cd-8a0d-4610-8d6b-199a5e60a637&
inheritPermissions=false

我们在使用C#脚本或者postman调用上面的接口时,系统总是提示下面的文字,

required anti-forgery cookie ”__RequestVerificationToken_L3Rmcw2“ is not present

通过分析后,我们发现这是一个POST类型的请求,必须指定header数据,需要将header类型设置为raw-json,同时还必须在header中添加一个空的json数据“{}”,例如下图是postman的截图

image

当接口调用成功后,系统会返回一个字符1,如上图。

另外,需要特别注意,由于上面的接口并非微软官方发布的Rest Api接口,如果你的Azure DevOps Server升级后,需要自行测试时间支持新版本,或者在URL中指定版本号,笔者测试的版本为5.0,例如你可以在URL中增加参数“v=5”。

2.2 获取区域路径的接口:ClassificationNodes

上面的接口基本解决了动态修改区域路径继承的问题,但是如何获取区域路径GUID,我们还需要另外一个接口,具体说明如下。

  • 接口名称

    • GET https://{server}/{collection}/{project}/_apis/wit/classificationnodes/{structureGroup}
    • URL中的structureGroup,有两个选项,areas和iterations
    • URL中的参数如下
    • $depth:层级,如果不指定这个参数,只返回根节点的区域路径或迭代路径
    • path:区域路径或迭代路径的名称,例如“信息系统\已审核”
  • 完成的示例如下:

http://server/collection/ded5bae5-a2f3-4b4e-80e6-44a5439654bf/_apis/wit/classificationnodes/areas?path=信息系统\已审核

或者返回9层区域路径

http://server/collection/ded5bae5-a2f3-4b4e-80e6-44a5439654bf/_apis/wit/classificationnodes/areas?$depth=9

通过上面的接口获取到区域路径的GUID后,我们就可以在第一个接口中,将这个GUID值传入到参数token后,实现动态设置区域路径的继承目标。

如果需要了解更新详细的功能,你还可以从微软Azure DevOps Server 的在线文档,查询更多的权威资料,也欢迎通过下面的联系方式与我沟通,相互学习,相互提高!


https://www.cnblogs.com/danzhang
Azure DevOps MVP 张洪君在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana 系列文章(六):Grafana Explore 中的日志

👉️URL: https://grafana.com/docs/grafana/latest/explore/logs-integration/#labels-and-detected-fields 📝Description: Explore 中的日志 除了指标之外,Explore 还允许你在以下数据源中调查你的日志。 ElasticsearchInfluxDBLoki 在基…

[算法设计与分析考点4] 改进的串匹配算法——KMP算法

算法核心思想 在BF算法的基础上加以改进,BF算法中每次当前字符不相等时,主串S要回溯到其下一个字符处,模式串T要回溯到 j0 位置进行下一趟的匹配。然而,大多数情况下,这种回溯是没有必要的,非常耗时且效率低…

qt入门介绍

1.Qt 是一个跨平台的 C开发库。主要用来开发图形用户界面(GUI)程序。Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互&…

【css】前端拉下代码后,node-sass sass-loader 与node版本不符怎么办

因为每次node和sass版本匹配都容易出现问题, 所以如果我自己开发,我不使用sass或者less,只用原生css 但如果是拉下来的项目,别人已经成功使用,webview版本 和 sass已经匹配,只需考虑 node版本匹配。 根据…

Hive分析函数系列文章

Hive分析窗口函数(一) SUM,AVG,MIN,MAXhttps://blog.csdn.net/weishuai90/article/details/128843715 Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANKhttps://blog.csdn.net/weishuai90/article/details/128858824 Hive分析窗口函数(三) CUME_DIST,PERCENT_RANKhttp…

Object类有什么作用?怎样使用Object类?

在Java中提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承自该类,因此,Object类通常被称之为超类、基类或根类。当定义一个类时,如果没有使用extends关键字为这个类显示地指定父类,那么该类会…

【微积分易错点总结】函数、极限和连续

🚀write in front🚀 📜所属专栏: 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对我最大的激励…

DSPE-PEG-DOTA,磷脂聚乙二醇大环配体 二硬脂酰基磷脂酰乙醇胺- 聚乙二醇-四氮杂环配体

中文名称:二硬脂酰基磷脂酰乙醇胺- 聚乙二醇-四氮杂环配体 英文名称:DSPE-PEG-DOTA 别称:1,2-distearoyl-sn-glycero-3-phosphoethanolamine-poly(ethylene glycol)-DOTA PEG分子量:1000、2000、3400、5000等等 用 途&#xf…

《流浪地球2》的现实倒影(一):从量子计算机到MOSS

编者按:跟大家一样,《流浪地球2》的上映让我们感到无比兴奋。作为科技领域的内容创作者,在《流浪地球2》中不仅看到了中国科幻电影与电影工业的崛起,更看到了大量现实中真实存在的科技脉络。由于这部电影在科技方面的基本功非常扎…

RK3568平台开发系列讲解(驱动基础篇)自旋锁详解

🚀返回专栏总目录 文章目录 一、什么是spinlock 自旋锁二、什么是raw_spinlock原始自旋锁三、自旋锁的使用3.1、spinlock 自旋锁相关API3.2、raw_spinlock原始自旋锁相关API沉淀、分享、成长,让自己和他人都能有所收获!😄 📢自旋锁用于处理器之间的互斥,适合保护很短的…

Python枚举类定义和使用

一些具有特殊含义的类,其实例化对象的个数往往是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。针对这种特殊的类,Python 3.4 中新增…

@WebServlet注解的解释和使用

大家好,今天分享一下WebServlet注解 首先,我们要知道,我们要写一个servlet程序,web,xml里的配置项很重要,里面包含了很多关于类绑定,以及服务器资源的请求路径问题(就是注册) 先把我这个看一遍&#xff0c…

【蓝桥杯】历届真题 完全二叉树的权值(省赛)Java

【资源限制】 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 【问题描述】 给定一棵包含N个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依…

SpringBoot将项目打包成JAR包或者WAR包

SpringBoot将项目打包成JAR包或者WAR包前言打包成JAR包打包成WAR包打包遇到的问题Maven环境问题跳过测试并打包前言 本文开发工具使用IDEA,已配置好Maven环境,如果未配置的可以参考另外一篇文章: Maven如何配置阿里镜像及安装全步骤 打包成JAR包 默认…

【C++】继承——切片、隐藏、默认成员函数、菱形

文章目录一、继承概念及定义二、赋值转换——切片三、继承的作用域——隐藏四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承及菱形虚拟继承八、继承与组合九、结语一、继承概念及定义 概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最…

刚毕业小白软考中级什么专业合适?

如果只是想考取软考中级证书,可以考虑比较热门的考试项目,当然具体还是要看和自己的职业发展和需求是否匹配为前提,这样对于自己今后的职业生涯规划也有一定帮助。中级科目介绍:软考中级备考攻略:反正只要认真备考&…

使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成 上

阅读提示:本篇文章的代码为在普通GAN代码上实现人脸图片生成的修改,文章内容仅包含修改内容,全部代码讲解需结合下面的文章阅读。 相关资料链接为:使用PyTorch构建GAN生成对抗 本次训练代码使用了本地GPU计算。 1 CelebADataset类…

2023.1.23-1.29 AI行业周刊(第134期):春节回家乡的感受

春节的假期,时间过得很快。 年前回家在路上的时候,就考虑到过年时间短暂,但是当大年初六和家乡别离,和大姐二姐们再见的时候,心中还是充满了不舍。 2022年初回家过年的画面还印在脑海中,和家乡相聚的频率…

【自然语言处理】文本分析:非结构化信息分析科学与应用导论(主题建模)

文本分析:非结构化信息分析科学与应用导论(主题建模)1.介绍 文本聚类可以将数据(这里即指文本)按照一定规则划分为不同的群组,理想情况下可以从聚类结果中发现一些有趣的模式。不同聚类方法的一致性意义和…

QT 使用线程完成串口数据的读写,并把数据传递给主线程

1、之前做串口通信的时候直接在主线程 用了api实现,这种只做个串口助手是OK的,但是在大型项目中这样做会占用主线程的时间,数据量大的时候不确定有多卡顿。 2、看了网上很多资料,没一个写的是对的,主要错在 QSerialPo…