C# WinForm - 在凭据管理器中本地保存密码(就像 iOS 上的钥匙串一样)

发布于 2024-10-31 23:32:18 字数 295 浏览 3 评论 0原文

我想创建一个 C# WinForms 应用程序,它将创建到需要用户名和密码(基本身份验证)的服务器的 Web 请求。

我想将密码本地保存在运行应用程序的计算机上(当然是加密的)。

基本上,我需要一些在 iOS 中作为 Keychain 运行的东西,或者在 eclipse 中作为“安全存储”运行的东西,仅适用于 .NET

我在 Windows 中找到了 Credential Manager,但所有 API 示例都来自 .NET Framework V2.0

不存在微软的一个普通API,关于如何在C#中使用它?

I would like to create a C# WinForms application which will create web requests to servers that require username and password (Basic authentication).

I want to save the password locally (encrypted of course) on the machine that runs the application.

Basically, I need something that operates as Keychain in iOS, or "secure storage" in eclipse, only for .NET

I've found the Credential Manager in Windows, but all API examples are from .NET Framework V2.0

Isn't there a normal API from Microsoft about how to use it in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

过去的过去 2024-11-07 23:32:18

Windows 应用程序可以使用 DPAPI 来实现数据保护 API,它存储计算机上的秘密,使用用户的登录凭据(间接)加密。任何以用户权限运行的进程都可以访问此数据。如果您愿意,您可以选择让用户添加自己的密码(针对这一项目/秘密)(PrompStruct)。 DPAPI 也可以通过 C# 访问(网上有示例)。

Windows applications can use DPAPI for that, the Data Protection API, which stores secrets on a computer, encrypted (indirectly) with a user's login credentials. Any process that runs with the user's privileges can access this data. Optionally you can let the user add his own password (for this one item / secret) if you like (PrompStruct). The DPAPI is also accessible via C# (there are examples on the net).

执着的年纪 2024-11-07 23:32:18

您可以将凭据存储在 app.config 的某个部分中,然后加密该部分(类似于您在 Web 应用程序的 web.config 中执行的操作)。

您可以使用SectionInformation.ProtectSection 来保护该节,并使用SectionInformation.GetRawXml 来检索加密信息(解密是透明完成的)。

示例(取自下面的 MSDN 文章):

static public void ProtectSection()
{

    // Get the current configuration file.
    System.Configuration.Configuration config =
            ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.None);


    // Get the section.
    UrlsSection section =
        (UrlsSection)config.GetSection("MyUrls");


    // Protect (encrypt)the section.
    section.SectionInformation.ProtectSection(
        "RsaProtectedConfigurationProvider");

    // Save the encrypted section.
    section.SectionInformation.ForceSave = true;

    config.Save(ConfigurationSaveMode.Full);

    // Display decrypted configuration 
    // section. Note, the system
    // uses the Rsa provider to decrypt
    // the section transparently.
    string sectionXml =
        section.SectionInformation.GetRawXml();

    Console.WriteLine("Decrypted section:");
    Console.WriteLine(sectionXml);

}

http:// /msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx

You can store the credentials in a section in app.config and then encrypt the section (similar to what you'll do in web.config for a web application).

You can use SectionInformation.ProtectSection to protect the section, and SectionInformation.GetRawXml to retrieve the encrypted info (decryption is done transparently).

Example (taken from the MSDN article below):

static public void ProtectSection()
{

    // Get the current configuration file.
    System.Configuration.Configuration config =
            ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.None);


    // Get the section.
    UrlsSection section =
        (UrlsSection)config.GetSection("MyUrls");


    // Protect (encrypt)the section.
    section.SectionInformation.ProtectSection(
        "RsaProtectedConfigurationProvider");

    // Save the encrypted section.
    section.SectionInformation.ForceSave = true;

    config.Save(ConfigurationSaveMode.Full);

    // Display decrypted configuration 
    // section. Note, the system
    // uses the Rsa provider to decrypt
    // the section transparently.
    string sectionXml =
        section.SectionInformation.GetRawXml();

    Console.WriteLine("Decrypted section:");
    Console.WriteLine(sectionXml);

}

http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文