我使用的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:从数据库提取数据后相关对象为空

使用 PEM 文件创建 DSA 签名

防止在 .NET 上构建路径中的反斜杠以进行跨平台部署

无法加载文件或程序集 不支持操作. (来自 HRESULT 的异常:0x80131515)

在 C# 中将字符串转换为 colored颜色

如何让 DateTimePicker 显示一个空字符串?

XmlNode 值与内部文本

IEnumerable Count() 和 Length 的区别

LINQ 性能常见问题解答

如何在 C# 中序列化异常对象?

何时在 C#/.NET 中使用指针?

如何根据默认样式创建样式?

String.Format - 它是如何工作的以及如何实现自定义格式字符串

如何使用配置转换删除 ConnectionString

如何保护我的 .NET 程序集免受反编译?

.Net 中 AOP 的最佳实现是什么?

例外:不支持 URI 格式

MailMessage,Sender 和 From 属性的区别

将 SignalR 2.0 .NET 客户端重新连接到服务器集线器的最佳实践

.NET Remoting 真的被弃用了吗?