我使用的blazor web组装应用程序不是个人网站托管的asp net core.这个网站集成了内容CMS,它需要api密钥、预览密钥和空间id.我目前正在我自己的应用程序设置中存储这些信息.将IConfiguration注入到我的服务中,然后通过GetSection方法访问这些值.

它们的形式如下:

    "DeliveryApiKey": "A",
    "ManagementApiKey": "not used",
    "PreviewApiKey": "B",
    "SpaceId": "C",```

这对于在本地运行是很好的,但是经过一些在线研究之后,如果部署并反编译DLL,这些密钥对用户来说将是可读和可见的.

blazor web组装应用程序存储api密钥的最佳方式是什么?

*编辑,这就是我如何使用这些密钥来访问内容丰富的CDA.这是基于文档的方法.

        {
            var apiKey = _configuration.GetSection("ContentfulOptions").GetSection("DeliveryApiKey").Value;
            var previewKey = _configuration.GetSection("ContentfulOptions").GetSection("PreviewApiKey").Value;
            var spaceid = _configuration.GetSection("ContentfulOptions").GetSection("SpaceId").Value;
            var httpClient = new HttpClient();
            var client = new ContentfulClient(httpClient, apiKey, previewKey, spaceid);
            return client;
        }

推荐答案

思考完问题后回来提供答案.我决定为这个项目创建一个web api,并编写服务来使用查询ContentfulCDA的繁琐工作.我要做的就是把它反序列化成我喜欢的东西.这似乎是最好的解决方法,因为api密钥将通过appsettings在客户端可见.json.

此外,Blazor wasm项目中的appsettings.json显然不能访问环境变量,因为它们没有向浏览器公开,所以我使用EVS的 idea 行不通-所以web API是最好的前进方式,而Azure Key Vault将是保护这些密钥的下一步.

都铎王朝

.net相关问答推荐

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

避免函数和其他对象之间的相互递归的模式?

如何在 .Net Core EF 中组合多个条件表达式来过滤数据?

为什么这两个比较有不同的结果?

在 .NET 反射中使用 GetProperties() 和 BindingFlags.DeclaredOnly

ASP.NET MVC:隐藏字段值不会使用 HtmlHelper.Hidden 呈现

使用 Windows 服务和 C# 检测 USB 驱动器插入和移除

使用泛型装箱和拆箱

HttpClient 和使用代理 - 不断得到 407

在 Moq Callback() 调用中设置变量值

如何找到 ManualResetEvent 的状态?

C# 属性实际上是方法吗?

在 .NET Core RC2 中构建 .exe 文件

从 OpenFileDialog 路径/文件名中提取路径

.Net 正则表达式:单词字符 \w 是什么?

将记录器作为单身人士是一个好习惯吗?

通过反射查找可空属性的类型

如何在安装后立即启动 .NET Windows 服务?

obj 文件夹是为了什么而生成的?

浮动与双重性能