c# - 如何以编程方式更新本地机器上的颠覆密码?

标签 c# svn authentication tortoisesvn cryptoapi

我正在构建一个小型内部工具,供我公司的开发人员使用。一个小目标是在我们更改密码时更新多个位置。需要更新的这些位置之一是颠覆。大多数开发人员使用 TortoiseSvn 但不是所有人都这样做(所以我更喜欢程序中立的解决方案,但这不是必需的)。

根据我对这个主题的研究,我的第一印象是 Tortoise 或其他应用程序会有我可以使用的更改密码功能。据我所知,情况并非如此。所以我的下一个想法是更改存储在 %APPDATA%\Subversion\auth\svn.simple 中的加密密码。这样,我们就可以绕过任何程序,只需修复本地计算机凭据即可继续我们的快乐之旅。

对于 Windows 机器,subversion 使用 wincrypt 密码存储进行加密。使用该代码非常简单。我找到了这个 DPAPI (from Obviex)可以为我处理加密的代码。它只为我处理细节(小提示:我在使用 System.Security.Cryptography.ProtectedData 时遇到了一些小问题,所以我决定坚持使用其他方式)。

使用这段代码,我能够从 svn.simple 文件夹中解密密码并发现它有效(之前保存的身份验证被解密并找到正确的密码)。但是,当我加密密码并将其存储在适当的位置时,我总是会从 TortoiseSvn 获得登录屏幕。它不喜欢我的加密密码。

那么我的问题是什么...有没有人完成了与我正在尝试做的事情类似的事情?我应该忘记尝试更新颠覆密码吗?我是否应该强制 checkout 存储库并提供凭据(我可以使用 SharpSvn 执行此操作),然后在完成后删除存储库?

我想我只是希望发现有人已经解决了这个问题,并且可以为我指明正确的方向。如果您有任何问题,请告诉我。

其他值得注意的链接:

最佳答案

我知道这与您要求的方向完全不同,但在正确的情况下,它可以实现您的目标...

如果您使用 Active Directory 来管理您的用户并且您愿意切换您的 SVN 服务器应用程序,您应该考虑 VisualSVN server .它支持针对 LDAP 的身份验证,并使用 authz 文件中的用户 SID,因此用户名和密码更改是透明的。再加上它是 free for commercial use .

关于c# - 如何以编程方式更新本地机器上的颠覆密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789436/

相关文章:

c# - 在 C# WPF 中使用 Datacontext 填充数据网格

c# - CredentialCache.Add 方法中的 authType 参数

svn - 通过Tortoise从SVN删除文件/文件夹: how to?

c# - 未在模型中设置 DropDownListFor 的选定值

c# - 好还是坏的做法?在 getter 中初始化对象

svn - "svn: warning: W155010: The node is not an external"是什么意思?

eclipse - 请求的资源 () 不可用。 (下载 JSF 2.0 项目后运行 Tomcat 7.0 时)

java - TargetAuthenticationStrategy,更改优先顺序

authentication - PowerShell通过凭据发出Web请求

javascript - 如何在 Meteor 中隐藏/显示元素?