在 .NET 中使用可以漫游的 Web 凭据

Windows 凭据管理器是一个内置在 Windows 操作系统中的功能,为用户提供一种安全的方式来存储和管理凭据。本文主要介绍如何在 .NET 中使用可以漫游的 Web 凭据,以及使用中的基本事项。

1. 引言

在前面的文章《试用 Windows Terminal 中的 Terminal Chat 功能》中,我们曾提到为了保证配置的安全,Azure Openai 的配置信息被存储在凭据管理器中,类别为Web 凭据。今天我们就聊一聊如何在 .NET 中如何使用凭据管理器,本文将主要讲述 Web 凭据的使用。

2. 凭据管理器

通过 Windows 凭据管理器,用户可以存储和管理凭据,这些凭据可以是用户名和密码、证书或其他凭据。我们可以看到凭据管理器中有两个类别:Windows 凭据和 Web 凭据。

2.1 Windows 凭据

Windows 凭据管理器的一个特殊功能是它可以安全地存储用户的凭据。这意味着用户的用户名和密码都被加密存储,以防止未经授权的访问。此外,凭据管理器还可以备份和恢复用户的凭据,这对于防止凭据丢失非常有用。

请添加图片描述

凭据管理器解决的主要问题是提供了一种简单而安全的方式来管理用户的凭据。用户无需记住所有的用户名和密码,只需要将它们保存在凭据管理器中,然后在需要时,Windows 就会自动提供这些凭据。这大大简化了用户的工作,同时也提高了安全性。

2.2 Web 凭据

Web 凭据是一种特殊类型的凭据,它们用于存储与 Web 网站和应用程序相关登录信息的凭据。Web 凭据的一个特殊之处在于,它不像 Windows 凭据那样可以自行添加和编辑。相反,Web 凭据是由浏览器和应用程序自动创建和管理的。

请添加图片描述

但是 Web 凭据却有一个非常棒的地方,那就是它们可以在不同的设备之间同步。这意味着用户可以在一个设备上创建一个 Web 凭据,然后在另一个设备上使用它。这对于那些经常在不同设备上工作的用户来说非常有用。

3. UWP 应用中使用

在 UWP 中使用凭据管理器非常简单,只需要使用 PasswordVault 类即可。PasswordVault 类提供了一组方法,用于添加、删除和检索凭据。下面我们就来看一下如何使用 PasswordVault 类。以下只是基本的使用方法,更多的使用方法可以参考官方文档。

添加凭据

添加凭据非常简单,只需要调用 PasswordVault 类的 Add 方法即可。Add 方法接收一个 PasswordCredential 对象作为参数,PasswordCredential 对象包含了凭据的详细信息,包括用户名、密码和备注等。

var vault = new PasswordVault();
vault.Add(new PasswordCredential("WebResource", "UserName", "Password"));

删除凭据

删除凭据也非常简单,只需要调用 Remove 方法即可。Remove 方法接收一个 PasswordCredential 对象作为参数,我们可以通过 Retrieve 方法来检索。

var vault = new PasswordVault();
vault.Remove(vault.Retrieve("WebResource", "UserName"));

当然也可以自己创建一个 PasswordCredential 对象。

var vault = new PasswordVault();
var credential = new PasswordCredential()
{Resource = "WebResource",UserName = "UserName",
};
vault.Remove(credential);

检索凭据

检索凭据前面删除凭据中已经提到了,这里就不再赘述了。获取到 PasswordCredential 对象后,我们可以通过 Password 属性来获取密码。

var vault = new PasswordVault();
var password = vault.Retrieve("WebResource", "UserName").Password;
var dialog = new ContentDialog()
{Title = "Password",Content = password,PrimaryButtonText = "OK",
};
await dialog.ShowAsync();

4. WinForm 和 WPF 中使用

在 WinForm App 和 WPF APP 中使用也是非常简单,同样是需要使用 SWindows.Security.Credentials 命名空间中。但是在 WinForm 和 WPF 中,我们在使用 .NET 5 及以上,比如当前的 .NET 8 创建好项目后,需要调整一下项目的目标框架。改为通过项目的 TargetFramework 属性指定要访问的 Windows API 版本。 例如:

<TargetFramework>net8.0-windows10.0.17763.0</TargetFramework>

其他就没有什么区别了,按照之前的使用方法即可。

5. 在 .Net Framework 中使用

新的 WinForm 形式其实也挺好用的,可以使用最新的 .NET 8 进行开发。非要用 .Net Framework 也不是不行,它也能使用 Window 凭据管理器,但要通过使用 P/Invoke 来调用 Windows API。不过,目前还没有找到使用 web 凭据的方法。

P/Invoke 是可用于从托管代码访问非托管库中的结构、回调和函数的一种技术。 大多数 P/Invoke API 包含在以下两个命名空间中:System 和 System.Runtime.InteropServices。 使用这两个命名空间可提供用于描述如何与本机组件通信的工具。关于 P/Invoke 的更多信息可以参考官方文档。

这里不再赘述 P/Invoke 的使用,感兴趣的话可以通过相关的Win32 API 文档 ,来实现在 .Net Framework 中使用 Windows 凭据管理器。

6. 特别注意

在 Windows 平台使用凭据管理器虽然方便,但是也有一个需要特别注意的地方:凭据的安全性。

6.1 不同使用方式的区别

UWP 应用中,拥有天然优势,可以直接使用 PasswordVault 类,并且凭据显示有保存者的信息。这样,就可以防止其他应用获取到凭据。

如下图所示:这里面有两个凭据,虽然他们的ResourceUserName属性都一直,但是一个是显示了保存者为“CredentialsTest”应用,另一个是没有保存者的。

请添加图片描述

也就是说,只有保存者为“CredentialsTest”应用的才能获取到凭据。其他应用是无法获取到凭据的。

而对于 WinForm 和 WPF 应用,虽然也可以使用,但是这种方式就没有保存者的信息。没有保存着信息的凭据,就相当于是大家公用的,可以被其他应用获取到凭据内容,并随意进行删除和修改,这样就会存在安全隐患。

6.2 确保安全性

如果你是通过桌面应用来使用凭据管理器,那么需要注意凭据的安全性。因为桌面应用是可以被其他应用获取到的。

为了防止恶意应用获取到凭据,当然首先还是建议,能选 UWP 就选 UWP,毕竟 UWP 应用的安全性更高。

另外,也可以将凭据进行加密,然后再保存到凭据管理器中。这样即使被获取到,也无法直接使用。当然,这样也会带来一些不便,比如每次使用凭据时都需要解密,然后再使用。

当然,如果只是使用其漫游和便捷的特性存储一些不重要的凭据,那么也可以不用考虑安全性问题。

7. 总结

本文主要介绍了如何在.NET环境下访问和使用Windows的凭据管理器,包括在UWP和桌面应用中的使用方法。我们还讨论了凭据管理器的安全性问题,以及在使用过程中需要注意的事项。如果你在实践中遇到任何问题,或者有任何疑问,欢迎留言,我会尽快回复你。如果你觉得这篇文章对你有帮助,也欢迎分享给你的朋友。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/238317.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

D25XB60-ASEMI电机整流桥D25XB60

编辑&#xff1a;ll D25XB60-ASEMI电机整流桥D25XB60 型号&#xff1a;D25XB60 品牌&#xff1a;ASEMI 封装&#xff1a;GBJ-5&#xff08;带康铜丝&#xff09; 特性&#xff1a;插件、整流桥 平均正向整流电流&#xff08;Id&#xff09;&#xff1a;25A 最大反向击穿…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法&#xff08;全文检索、精准查询、地理坐标查询&#xff09; 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL&#xff08;Domain Specific Language&#xff09;来定义查…

2024年【广东省安全员B证第四批(项目负责人)】考试试卷及广东省安全员B证第四批(项目负责人)模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【广东省安全员B证第四批&#xff08;项目负责人&#xff09;】考试试卷及广东省安全员B证第四批&#xff08;项目负责人&#xff09;模拟考试题&#xff0c;包含广东省安全员B证第四批&#xff08;项目负责人&…

Linux -- Nginx服务基础

4.1Nginx服务基础 Nginx(发音为[engine x])专为性能优化而开发&#xff0c;其最知名的优点是它的稳定性和低系统资源消 耗&#xff0c;以及对HTTP并发连接的高处理能力&#xff08;单台物理服务器可支持30000~50000个并发请求&#xff09;&#xff0c;正因 为如此&#xff0c;…

振弦采集仪在隧道工程监测中的应用与效果评估

振弦采集仪在隧道工程监测中的应用与效果评估 振弦采集仪在隧道工程监测中起到了重要的作用&#xff0c;主要用于对隧道结构的振动进行监测和分析。通过测量振弦的振动频率和振幅&#xff0c;可以评估隧道结构的稳定性和安全性。 振弦采集仪的应用主要体现在以下几个方面&…

edge 指纹浏览,多账号

1.需求来源&#xff1a; 登录多个推特账号来测试 2.方法&#xff1a; 2.1 多个手机 pass 2.2 浏览器 --- 源于chrom浏览器多账号的应用 3.指纹浏览器可以实现&#xff0c;那么win11自带浏览器呢 看图&#xff1a;​​​​​​​ 新建个人资料后会打开新的浏览器--》可以不用账号…

python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(-代码)

Python是一种功能强大的编程语言&#xff0c;它提供了许多库和工具&#xff0c;用于处理和可视化数据。在本文中&#xff0c;我们将介绍使用Python绘制热力图&#xff0c;并对VOC数据集中的类别标签进行分布及数量统计。 首先&#xff0c;我们需要导入所需的库。使用numpy库来…

新书速览|Spring Boot+Vue.js企业级管理系统实战

教你用Spring BootVue.js构建完整企业级管理系统项目 本书内容 《Spring BootVue.js企业级管理系统实战》以一个完整的全栈微服务项目为主线&#xff0c;详细阐述项目的技术架构、开发流程和技术要点&#xff0c;包括Vue.js前端技术、Spring Boot后端技术和Spring Cloud Alibab…

文件模块常用api

文件模块常用api 文件夹常用操作 文件夹操作 fs.mkdir fs.rmdir 需要是空目录 题目&#xff1a;递归删除目录* 串行/并行删除文件*

用二维码介绍产品详情,扫码查看图文并茂的宣传册

传统的产品宣传方式&#xff0c;往往以产品手册、宣传单等纸质物料为主&#xff0c;更新成本高昂&#xff0c;一旦修改内容&#xff0c;就必须重新印刷&#xff0c;而且不易携带和保存&#xff0c;影响宣传效果和客户体验。 为了避免上述问题&#xff0c;可以在草料上搭建产品…

soft212期末

文章目录 安卓填空题选择题 C# 安卓 Dalvik中得到Dx工具会把部分class文件转换成dex文件。 如果希望在XML布局文件中调用颜色资源&#xff0c;可以使用color调用 Android程序入口的Activity是在AndroidManifest.xml文件中注册的 Android中查看应用程序日志的工具是LogCat Dal…

Making Large Language Models Perform Better in Knowledge Graph Completion

Making Large Language Models Perform Better in Knowledge Graph Completion 基本信息 博客贡献人 鲁智深 作者 Yichi Zhang, Zhuo Chen, Wen Zhang, Huajun Chen 隶属于浙江大学计算机学院和软件学院 摘要 本文主要探讨了如何将有用的知识图谱结构信息融入大语言模型中…

哪种护眼灯对眼睛好?五款高品质考研台灯推荐

眼睛是我们感知世界的窗户&#xff0c;眼睛对光的敏感度非常高。长时间接触强光或不适宜的光线环境可能会对眼睛造成伤害。因此&#xff0c;选择一款适合自己的护眼台灯非常重要。护眼台灯能够模拟自然光的光谱&#xff0c;减少眼睛对不良光线的伤害。它具备调节光线亮度&#…

springCould中的Stream-从小白开始【12】

&#x1f95a;今日鸡汤&#x1f95a; 见过一些人&#xff0c;他们朝九晚五&#x1f62d;&#xff0c;有时也要加班&#xff0c;却能把生活过得很&#x1f60e;有趣。他们有自己的爱好&#xff0c;不怕独处。他们有自己的坚持&#xff0c;哪怕没人在乎。&#x1f926;‍♂️ 开心…

RISC-V Bytes: Caller and Callee Saved Registers

原文链接1&#xff1a;https://danielmangum.com/posts/risc-v-bytes-caller-callee-registers/ 原文链接2&#xff1a;https://zhuanlan.zhihu.com/p/77663680 //主要讲栈帧 原文链接3&#xff1a;https://www.jianshu.com/p/b666213cdd8a //主要讲栈帧 This is part of a new…

MySQL面试题 | 08.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

AArch64 memory management学习(二)

提示 该博客主要为个人学习&#xff0c;通过阅读官网手册整理而来&#xff08;个人觉得阅读官网的英文文档非常有助于理解各个IP特性&#xff09;。若有不对之处请参考参考文档&#xff0c;以官网文档为准。AArch64 memory management学习一共分为两章&#xff0c;这是第二章。…

实战 | 某电商平台类目SKU数获取与可视化展示

一、项目背景 最近又及年底&#xff0c;各类分析与规划报告纷至沓来&#xff0c;于是接到了公司平台类目商品增长方向的分析需求&#xff0c;其中需要结合外部电商平台做对比。我选择了国内某电商平台作为比较对象&#xff0c;通过获取最细层级前台类目下的SKU数以及结构占比&…

Java网络爬虫--HttpClient

目录标题 技术介绍有什么优点&#xff1f;怎么在项目中引入&#xff1f; 请求URLEntityUtils 类GET请求带参数的GET请求POST请求 总结 技术介绍 HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、功能丰富的、支持 HTTP 协议的客户端编程工具包。相…

八分钟了解一致性算法 -- Raft算法

前言 #### 分布式一致性在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性。 #### 分布式一致性算法比较常见的一致性算法包括Paxos算法,Raft算法,ZAB算法等• Paxos是Leslie Lamport提出的一种基于消息传递的分布式一致性算法。很多分布式一致性算法都由…