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

通过对该主题的研究,我的第一印象是Tortoise或其他应用程序将具有我可以使用的更改密码功能。根据我的发现,事实并非如此。因此,我的下一个想法是更改存储在%APPDATA%\ Subversion \ auth \ svn.simple中的加密密码。这样,我们可以绕过任何程序,而只需修复本地计算机凭据,然后以我们乐意的方式运行。

对于Windows计算机,Subversion使用Wincrypt密码存储进行加密。使用该代码非常简单。我发现此DPAPI (from Obviex)代码可以为我处理加密。它只是为我处理细节(小提示:我在System.Security.Cryptography.ProtectedData上遇到了一些小问题,因此我决定采用其他方式)。

使用此代码,我能够从svn.simple文件夹中解密密码并发现它可以工作(以前保存的身份验证已解密并提供了正确的密码)。但是,当我加密密码并将其存储在正确的位置时,我总是会从TortoiseSvn获得登录屏幕。它不喜欢我的加密密码。

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

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

其他值得注意的链接:


Stackoverflow question on extracting TortoiseSVN password
TortoiseSVN Password Decrypter-用于解析svn.simple中的文件。对将新的加密密码应用于现有的svn身份验证文件进行了小的更改。

最佳答案

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

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

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

10-17 00:55