代码之家  ›  专栏  ›  技术社区  ›  Seva Alekseyev

哪个作用域允许TFS扩展操作ACL?

  •  1
  • Seva Alekseyev  · 技术社区  · 8 年前

    VSS.require(["VSS/Service", "VSS/Security/RestClient"],
            function (Srv, SecAPI)
            {
                var SecClient = Srv.getCollectionClient(SecAPI.SecurityHttpClient);
                SecClient.queryAccessControlLists("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee").then(function(a)
                {
                    //...
                });
            }
    

    这与401未经授权的错误。据我所知,扩展可能使用的RESTAPI列表是由 scopes 清单中的参数。我应该在那里放些什么才能起作用? The scopes list

    同时,使用Windows auth从常规REST客户端调用同一端点的效果与预期一样。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Seva Alekseyev    7 年前

    vso.security_管理 .


    vso.base

    在TFS 2015 u2中,大概在下面,没有涵盖ACL相关终点的范围。


    我找到了一个 非常 可变的 CreateDefault 课堂上 Microsoft.VisualStudio.Services.DelegatedAuthorization.AuthorizationScopeDefinitions Microsoft.TeamFoundation.Framework.Server.dll .

    C:\Program Files\Microsoft Team Foundation Server 14.0\Application Tier\Web Services (适用于2015年TFS)。

    <%@ Application Inherits="Microsoft.TeamFoundation.Server.Core.TeamFoundationApplication" %>
    <%@ Import namespace="Microsoft.VisualStudio.Services.DelegatedAuthorization" %>
    <%@ Import namespace="System.Collections.Generic" %>
    <%@ Import namespace="System.Linq" %>
    <script runat="server">
    void Session_Start(object o, EventArgs a)
    {
        AuthorizationScopeDefinition Def = AuthorizationScopeDefinitions.Default.scopes
            .FirstOrDefault(d => d.scope == "vso.identity");
        if(Array.IndexOf(Def.patterns, "/_apis/SecurityNamespaces#GET") < 0)
        {
            List<string> l = Def.patterns.ToList();
            l.Add("/_apis/SecurityNamespaces#GET");
            l.Add("/_apis/AccessControlLists#GET+POST");
            l.Add("/DefaultCollection/_apis/SecurityNamespaces#GET");
            l.Add("/DefaultCollection/_apis/AccessControlLists#GET+POST");
            Def.patterns = l.ToArray();
        }
    }
    </script>
    

    挂接Application\u Start会更有意义,但DLL背后的代码已经挂接了它。全局中的另一个处理程序。asax不会覆盖。我用猴子修补 vso.identity 范围,因为我的扩展已经声明了这一点,但可以随意使用任何其他扩展。

    引入自己的全新范围可能行不通。

        2
  •  0
  •   PatrickLu-MSFT    8 年前

    有一个用户的声音,你可以投票。 REST API for release defintion or release enviornment TFS PM将仔细审查您的建议。