小编Yav*_*vuz的帖子

从VSTS任务组中删除不必要的参数

我有一个任务组,其中包含Azure Key Vault任务和Azure资源组部署任务以及其他任务.在后者中,我想要使用来自密钥库的值覆盖ARM模板中的一些参数.

Azure Key Vault任务中的Secrets过滤器字段如下所示.这些秘密可作为其他任务中的变量使用,其名称与秘密名称相同.因此,Azure资源组部署任务中的" 覆盖模板参数"字段具有该值.secret1,secret2,secret3-p1 $(secret1) -p2 $(secret2) -p3 $(secret3)

问题是VSTS会自动选择三个变量作为任务组的参数.我不希望这种情况发生.这些变量将在任务组本身中设置和读出.它们就像一个班级中的私人领域.

一种方法是删除Azure Key Vault任务,然后使用Build and Release> Library> Variable组.但是没有办法将变量组链接到任务组.

azure-devops azure-pipelines-build-task

12
推荐指数
2
解决办法
2471
查看次数

Azure功能如何针对SignalR进行身份验证?

我正在编写一个类似Web应用程序的仪表板.外部系统的状态变化应通过SignalR下推到浏览器.外部系统将其更新发送到Azure Service Bus主题.我编写了一个Azure功能,它将由其中一个主题触发.该功能通过SignalR .Net客户端库连接到SignalR集线器,并将消息转发到集线器.然后,集线器将消息发送到浏览器.

现在这很好用.下一步是启用SignalR集线器的身份验证.Web应用程序的其他部分需要身份验证.用户使用其Azure AD凭据登录.

问题是Azure功能如何针对SignalR进行身份验证?在Azure功能应用程序的应用程序设置中保存一些凭据是不行的.

我已经研究了SignalR的扩展技术的解决方法.我们可以将服务总线主题配置为背板.每个SignalR集线器都会将消息的副本发送到主题中,以便集线器的其他实例获取消息并将其下推到其连接的客户端.想法是Azure功能将状态信息推送到背板主题.但遗憾的是SignalR使用未知编码.所以这种解决方法是不可能的.

详细了解@ astaykov的回答

  1. 在SignalR的应用注册中添加应用角色.

    "appRoles": [
      {
        "allowedMemberTypes": [
          "Application"
        ],
        "displayName": "Access SignalR Backend",
        "id": "239de039-e2c5-445c-8454-ccdc51888b94",
        "isEnabled": true,
        "description": "Allow the application to access SignalR Backend.",
        "value": "access"
      }
    ],
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将Azure Function App的应用程序注册与上述应用程序角色相关联.确保Azure Function App的注册类型为Web app/API.
  3. 在Azure Function App的应用程序注册中创建密钥,并在获取令牌时使用它.

    var ctx = new AuthenticationContext(tenant);
    var cred = new ClientCredential(functionAppRegistrationId, key);
    AuthenticationResult result = await ctx.AcquireTokenAsync(signalRRegistrationId, cred);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在查询字符串中使用令牌.在互联网上搜索承载认证SignalR.

authentication azure signalr azure-functions

4
推荐指数
1
解决办法
1851
查看次数