我有一个任务组,其中包含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组.但是没有办法将变量组链接到任务组.
我正在编写一个类似Web应用程序的仪表板.外部系统的状态变化应通过SignalR下推到浏览器.外部系统将其更新发送到Azure Service Bus主题.我编写了一个Azure功能,它将由其中一个主题触发.该功能通过SignalR .Net客户端库连接到SignalR集线器,并将消息转发到集线器.然后,集线器将消息发送到浏览器.
现在这很好用.下一步是启用SignalR集线器的身份验证.Web应用程序的其他部分需要身份验证.用户使用其Azure AD凭据登录.
问题是Azure功能如何针对SignalR进行身份验证?在Azure功能应用程序的应用程序设置中保存一些凭据是不行的.
我已经研究了SignalR的扩展技术的解决方法.我们可以将服务总线主题配置为背板.每个SignalR集线器都会将消息的副本发送到主题中,以便集线器的其他实例获取消息并将其下推到其连接的客户端.想法是Azure功能将状态信息推送到背板主题.但遗憾的是SignalR使用未知编码.所以这种解决方法是不可能的.
详细了解@ astaykov的回答
在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)在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)