【问题标题】:In C# How to get Windows Credentials from credential manager在 C# 中如何从凭据管理器获取 Windows 凭据
【发布时间】:2020-02-15 05:45:05
【问题描述】:

他们在每个地方都在为获取用户提供答案......但我想从凭据管理器获取凭据? 我已经尝试了所有使用 . 的方法,

1.System.Security.Principal.WindowsIdentity.GetCurrent().Name

**Output:** => "DESKTOP\\India"

这是提供域名而不是凭据管理器凭据。 2.我试过下面的代码..使用来自nuget的凭据包

var cm = new Credential();

cm.Target = "Here what i have to put????";

我对我必须在 cm.target="????" 中输入的内容有疑问 3.试过了

Environment.UserName()

Output: "India"(This is not from credential manager credentials)

4.试过

System.Net.CredentialCache.DefaultCredentials()

Output:
{

`Username:'',`
password:''
}

我认为我们必须发送参数,这些也不是来自 Windows 凭据管理器凭据。

我正在等待你们的帮助。任何帮助将不胜感激。

【问题讨论】:

  • 您能否重新表述一下您的问题,很难理解您的意思。这可能会有所帮助:stackoverflow.com/help/how-to-ask
  • 如何使用 c#.Net 获取 Windows 凭据(用户名和密码)
  • 我想知道这是否应该被支持,因为密码应该被散列,这意味着它们也必须被去散列。 OP 只想知道如何检索当前登录到运行应用程序的 Windows 的经过身份验证的用户的用户名和密码。 @papanito
  • 我需要凭证管理器的用户名 ....不需要密码

标签: c# asp.net .net wcf


【解决方案1】:

简而言之,凭据管理器下的Windows凭据只能获取用户名,不能获取密码。这是由 Native 底层 API 决定的。 关于如何获取 Windows 凭据中的用户名,请参考以下链接。
https://github.com/AdysTech/CredentialManager
用法(target参数表示目标网络/互联网地址,即左侧的名称):

//get the username of "a" credential. username:b, password:123456
var result=CredentialManager.GetCredentials("a", CredentialManager.CredentialType.Windows);
            Console.WriteLine(result.UserName+": "+result.Password);


结果。

这是与此主题相关的讨论。
Retrieve credentials from Windows Credentials Store using C#
希望对你有用。

【讨论】:

    【解决方案2】:

    最初的答案令人困惑。似乎只能检索用户名,然后链接一个可以检索完整凭据的项目。我知道这被标记为 ASP,但它也被标记为 C#。我对 ASP 的经验很少,但代码隐藏的工作方式应该不会有任何不同(上面的答案没有说明任何内容)。

    一段时间以来,我一直在使用 PowerShell 检索存储的凭据。刚才,我需要一个 C# 解决方案(我不能在我的项目中使用那个 PS 包)。

    https://github.com/meziantou/Meziantou.Framework

    没什么特别的,但我现在写这个是为了确认它有效。 StoredCredentialName通用凭据的“Internet 或网络地址”字段。

        Private Function GetCredentialFromStorage() As Net.NetworkCredential
            Try
                Dim c = Meziantou.Framework.Win32.CredentialManager.ReadCredential(StoredCredentialName)
                Return New Net.NetworkCredential(c.UserName, c.Password)
            Catch ex As Exception
                Return Nothing
            End Try
        End Function
    

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多