是否可以在本地(或管道中)通过托管标识访问 Azure 应用程序配置,而无需向 Azure 部署任何其他服务?
我有一个 .net core 单元测试项目,它针对实时站点运行一些集成测试。为了将各种设置、秘密等保留在源代码之外,我想我也许可以使用 Azure 应用程序配置。
我正在阅读本指南,但它似乎旨在访问应用程序配置的应用程序服务https://learn.microsoft.com/en-us/azure/azure-app-configuration/howto-integrate-azure-management-service -身份?标签= core2x
我已启用系统分配的托管标识
[
]1]
并尝试使用以下代码:
var builder = new ConfigurationBuilder();
builder.AddAzureAppConfiguration(options =>
{
options.Connect(new Uri("https://sauitest-config.azconfig.io"), new DefaultAzureCredential())
.Select(KeyFilter.Any, "TestLocal");
});
Run Code Online (Sandbox Code Playgroud)
不幸的是这会返回一个403 (Forbidden). 注意我以管理员身份登录 Visual Studio,使用的凭据与访问门户所用的凭据相同。显然DefaultAzureCredential应该在本地和天蓝色环境中工作。
我在这里错过了什么吗?
我正在做一个计时器触发的 Azure 函数。我希望能够更改计时器,即 cron 表达式,而无需重新部署。我正在从 Azure 中的应用程序配置获取我的其他设置,但这对 TimerTrigger 不起作用,我得到:当我在 config 是 IConfiguration 的情况下编写时,非静态字段、方法或属性需要对象引用TimerTrigger(config["CronExpression"])。有谁知道如何使用 Azure 应用程序配置来做到这一点?除了本地开发之外,我不希望使用 settings.json 文件
我正在尝试使用托管标识从网络框架应用程序连接到 Azure 应用程序配置,但存在权限问题。
我如何连接
options.Connect(new Uri("https://myconfigstore.azconfig.io"), new ManagedIdentityCredential(clientId));
Run Code Online (Sandbox Code Playgroud)
我已经尝试了使用门户可以找到的所有各种 clientId、objectids 和 applicationId guid,但无论何时使用 guid 调用它,总是收到错误的请求
Azure.Identity.CredentialUnavailableException: 'ManagedIdentityCredential authentication unavailable,
the requested identity has not been assigned to this resource.
Status: 400 (Bad Request)
Run Code Online (Sandbox Code Playgroud)
如果我在没有指定 clientId 的情况下创建 ManagedIdentityCredential,则会收到此错误
Azure.RequestFailedException: 'Service request failed.
Status: 403 (Forbidden)
Run Code Online (Sandbox Code Playgroud)
我已授予我的管理标识 Azure 应用配置数据权限
这是我应该使用的 clientId 吗?
更新:
我刚刚尝试使用我的活动目录的 ID(AAD --> 属性),我得到了一个
Azure.RequestFailedException: 'Service request failed.
Status: 403 (Forbidden)
Run Code Online (Sandbox Code Playgroud)
这只能意味着我使用了错误的 id,否则它应该像我看到的另一个错误一样返回 400(错误请求)。
完整代码
private static async Task Main()
{
var builder = new ConfigurationBuilder();
const string clientId …Run Code Online (Sandbox Code Playgroud) 我们有FeatureFlag:IsServiceNeeded,在Azure应用程序配置的功能管理器中没有设置标签。我们通过设置缓存间隔在内置方法 AddAzureAppConfiguration 中使用。
我们正在使用 .net core 3.1 Web api 和 Azure 应用程序配置的功能管理器。
我们在应用程序初始化期间启用了 IsServiceNeeded,几个小时后,我们禁用了 IsServiceNeed。我们等待了一整天,但没有看到差异,因为下面返回 true 而不是 false。由于我们在 program.cs 文件中的配置方式,我们预计它每 3 分钟更新一次。
await _featureManager.IsEnabledAsync("IsServiceNeeded")
Run Code Online (Sandbox Code Playgroud)
如果您发现下面有任何奇怪的地方,请告诉我。提前致谢,
这是我们正在使用它的代码片段。
程序.cs文件
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var configurationRoot = config.Build();
var appConfigConString = configurationRoot["AppConfigConnectionString"];
config.AddAzureAppConfiguration(options => options.Connect(appConfigConString).UseFeatureFlags(featureFlagOptions => {
**featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(3);**
}));
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Run Code Online (Sandbox Code Playgroud)
Startup.cs 文件
public class Startup
{ …Run Code Online (Sandbox Code Playgroud) azure .net-core asp.net-core azure-app-configuration feature-flags
我正在尝试做的事情: 我正在尝试使用.net核心2.1 mvc Web应用程序在Azure App Configuration中设置带有前哨键的Azure App Configuration,目的是能够以天蓝色更改键,而没有一个键将在我的应用程序中更新,直到哨兵值已更改。从理论上讲,这应该允许我安全地热交换配置。
我的问题是: 执行此操作时,没有可用的WatchAndReloadAll()方法来监视IWebHostBuilder上的哨兵,并且备用的Refresh()方法似乎并未刷新状态。
背景信息以及我尝试过的内容: 上周,我参加了圣地亚哥的VS Live,并观看了有关Azure应用程序配置的演示。我在尝试使应用程序在隐含它时刷新配置值时遇到了一些问题,因此我也参考了此演示,介绍了如何执行此操作。相关部分的时间大约是10分钟。但是,该方法在IWebHostBuilder上似乎不可用。
我正在参考的文档: 在官方文档中没有对此方法的引用,请参阅doc quickstart .net core和doc dynamic configuration .net core
我的环境: 使用从Visual Studio Enterprise 2019运行的dot net core 2.1,以及适用于Microsoft.Azure.AppConfiguration.AspNetCore 2.0.0-preview-010060003-1250的最新预览nuget程序包
我的代码: 在演示中,他们通过CreateWebHostBuilder(string [] args)方法创建了一个IWebHostBuilder,如下所示:
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AzureConfiguration"])
.Use(keyFilter: "TestApp:*")
.WatchAndReloadAll(key: "TestApp:Sentinel", pollInterval: TimeSpan.FromSeconds(5));
});
})
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
我还使用当前文档以这种方式进行了尝试:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) …Run Code Online (Sandbox Code Playgroud) 我想实现 LogicApp,每次当有人更改应用程序配置中的键值对时都会触发构建。为了做到这一点,我创建了一个逻辑应用程序,当资源事件发生时触发:
但是,当我在应用程序配置中更改某些内容或手动尝试运行逻辑应用程序时,它会引发错误:
InvalidTemplate
The template language expression evaluation failed: 'The execution of template trigger 'When_a_resource_event_occurs' failed: the result of the evaluation of 'splitOn' expression '@triggerBody()' is of type 'Null'. The result must be a valid array.'.
Run Code Online (Sandbox Code Playgroud)
谁能提示我,逻辑应用程序配置有什么问题吗?
可以从 ARM 模板创建 Azure KeyVault 机密。您是否也可以以同样的方式从 ARM 模板在 Azure 应用程序配置中创建设置?如果此功能存在,我找不到任何相关文档。
azure azure-configuration azure-rm-template azure-app-configuration
在 Azure 中,您可以设置应用程序配置和 KeyVault。KeyVault 的目的是存储比应用程序配置更敏感的数据,并且能够单独管理对配置和保管库的访问。
那么在应用程序配置中使用 keyvault 引用有什么好处呢?
您基本上允许任何有权访问应用程序配置的人访问密钥保管库中的某些值,并绕过保管库通常提供的附加安全层。
如果配置中未引用这些相同的值,则需要对 Vault 进行身份验证才能访问这些相同的值。
我真的不明白 keyvault 引用给你带来了什么好处。
是否可以在 Angular 应用程序中使用 Azure 应用程序配置?目标是在Azure App Config中定义 Secrets 和其他字符串
并在 Angular 应用程序中使用它。
所有示例均适用于 .Net
我一直在尝试在我的Blazor应用程序中实现功能管理,但由于某种原因,我的程序拒绝接受“UseAzureAppConfiguration”,即使我应该有正确的使用和包。
这是我的 Startup.cs:
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using Microsoft.FeatureManagement;
namespace OreNoAppu
{
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) …Run Code Online (Sandbox Code Playgroud)