Asp.net core 学习笔记 ( Data protection )

2024-02-22 23:40

本文主要是介绍Asp.net core 学习笔记 ( Data protection ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考 : 

http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html

http://cnblogs.com/xishuai/p/aspnet-5-or-core1--identity-part-two.html

https://cnblogs.com/savorboard/p/dotnetcore-data-protection.html

http://cnblogs.com/savorboard/p/dotnet-core-data-protection.html

https://cnblogs.com/savorboard/p/dotnetcore-data-protected-farm.html

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers?view=aspnetcore-2.1

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/?view=aspnetcore-2.1

 

Data protection 主要用于 asp.net core 加密, 解密, 哈希.

先说说哈希, 通常用于做用户密码散列 (会有随机盐), 都封装好了,很方便. 

加密,解密主要是用于对称加密. 比如用户登入后的 cookies 等.

加密,解密会依赖 key, 在 .net 4.x 我们使用 web.config machine key 来做. 

做法简单,如果多架机器,只要 machine key 一样那么大家都能通用加密解密. 

asp.net core 把 machine key 拿掉了. 

现在比较麻烦. data protection 会生产一个 key...xml 的文档 

里面会有动态制作的 machine key, 还会有 expiry date ( 默认 90天 ).

当要加密信息时, data protection.protect('message'); 它会用最新的 machine key. 

所以我们最后会有好多的 machine key, 当解密的时候, 它会尝试用所有的 machine key 去解密, 如果解密成功, 还可以顺便用新的 machine key 加密哦. 

此外, machine key 还可以被加密. 比如使用 windows.DPAPI 或则 azure key-vault 的 key.

这样 key..xml 里就看不出 machine key 了. 

那要怎样实现多 machine 呢 ? copy paste key..xml 去每架机器吗 ?

当然不要, 最好是使用一个 share folder, 每架机器都可以访问的到, 例如放在云里面 Azure blob storage.

配置 : 

services.AddDataProtection().SetApplicationName("test-data-protection") // 因为是多架机器,所以必须表明 App name 不然就识别不出来了丫.PersistKeysToFileSystem(new System.IO.DirectoryInfo("C:\\data-protections-keys\\test-data-protection")) //放入共享文件夹 .ProtectKeysWithDpapi(protectToLocalMachine: true); // 加密 machine key (protectToLocalMachine 是说所有 window user 都可以执行, 不加的话只有 owner 可以执行)

用 Azure 

services.AddDataProtection().SetApplicationName("test-data-protection") // 因为是多架机器,所以必须表明 App name 不然就识别不出来了丫.PersistKeysToAzureBlobStorage(new Uri("https://blobaccount.blob.core.windows.net/blobcontainer/blobfolder/key.xml?SAStoken")) // 在 azure portal blob->container->folder->file generate SAS token/url, copy 过来就可以了.ProtectKeysWithAzureKeyVault("https://key-vault-name.vault.azure.net/keys/test-data-protection/dwdsawdsfasf", "clientId", "client secret"); // 做一个 key-vault 的key -> allow permission wrap key 等等, 做一个 App -> allow 使用 key-vault 

如果使用文件夹, 每一次 key expiry 后会创建一个新的 key..xml 文件, 如果使用 Azure, 它会在原本的 key..xml 里继续添加新的 key 而不是创建一个新的文件. 

特别说多一下 Azure 

首先是需要一个 key, 上一篇的 Azure key-vault,  做一个 appclient appsecret 然后 create key set permission (access policy 添加 application 进来, 还有 set allow warkey 等等)  最后有了 url + clientid + client secret 就行了, 

然后还需要一个 storage 放 xml, 开一个 blob 然后去弄 SAS token 就可以了. 也是记得 set permission read write edit, for 第一次的 xml 用 local 的方法 generate sql 先, 然后 upload to blob 在换去 store to azure 就可以了.

sas

注意这个签名的 key 哦

在 access key 里面可以换掉它的, refresh 之后, 依赖它的 sas 就不可以用了哦。小心哦.

 

转载于:https://www.cnblogs.com/keatkeat/p/9316389.html

这篇关于Asp.net core 学习笔记 ( Data protection )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736862

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.