首页 > 其他分享 >动态修改Azure DevOps区域路径或迭代路径的继承权限(Inhertiance)

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

时间:2023-02-02 21:14:20浏览次数:60  
标签:路径 DevOps 接口 server 区域 Azure 权限

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 张洪君
在这里插入图片描述

标签:路径,DevOps,接口,server,区域,Azure,权限
From: https://www.cnblogs.com/danzhang/p/17087420.html

相关文章

  • SpringBoot的静态路径映射处理
    springboot的默认静态路径:resources下面的/static;/public;/resources;/META-INF/resources这四个文件路径静态路径的默认映射路径是:/**;意思就是说浏览器......
  • Azure for Students 使用指北
    准备一个有AzureforStudents的微软账户。AzureforStudents提供了免费一年的两台B1s实例,两块P664G硬盘,本文将介绍如何利用好这些资源并且不会因为Azure毒瘤......
  • 通过路径循环匹配vue组件
    constresultComps={};letrequireComponent=require.context('./',//在当前目录下查找true,//false不遍历子文件夹true遍历子文件夹/\.vue$///正......
  • 1129.shortest-path-with-alternating-colors 颜色交替的最短路径
    问题描述1129.颜色交替的最短路径解题思路首先,将本题的图结构以边表的形式表现出来,然后采取广度优先搜索的方式寻找最短路径,一般来说广度优先搜索能够保证找到的是最短......
  • poj 3984 迷宫问题(BFS+输出路径)
    迷宫问题TimeLimit: 1000MS MemoryLimit: 65536KTotalSubmissions: 11323 Accepted: 6776Description定义一个二维数组: intmaze[5][5]={ 0,1,......
  • 【躺平有新意,跳槽有路径】重新定义“躺平”与“跳槽”
     前言:这两天的文章,很多的朋友加了好友,聊了很多各种话题,从投融资,到创业的方向,还有关于工作发展和跳槽方面。聊得过程中,一幕幕的往事涌上心头,今天就聊了这个,可以角度和......
  • 【DFS】LeetCode 124. 二叉树中的最大路径和
    题目链接124.二叉树中的最大路径和思路一个子树内部的最大路径和=左子树提供的最大路径和+根节点值+右子树提供的最大路径和。即dfs(root.left)+root.val+dfs(r......
  • 路径动态拼接问题__dirname
        ../会抵消上一个路径       ......
  • 力扣112 路径总和
    题目:给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。如果......
  • 【Azure 云服务】云服务(经典) 迁移至云服务(外延支持) 的相关疑问
    问题描述根据微软官方文档说明,云服务(经典)已弃用。所以关于它有以下的一些疑问:一:迁移时候的停机时间问题?二:云服务(经典)与云服务(外延支持)的区别是什么?三:注意事项有那......