6

有没有人想出一种方法来允许远程用户在 VisualSVN 服务器中更改自己的密码?我们让它在“独立”(非 ActiveDirectory)模式下运行,我发现这个优秀产品的唯一缺点是用户无法设置或更改他们的密码。

这是我可以忍受的事情,但是永远不会改变的密码的安全隐患是众所周知的。我确信必须可以添加该功能,但我对 VisualSVN 使用的任何技术都没有一点天赋 - 所以只是想知道是否有人做过?

更新 2010-12-21

我决定自己来实现这一点。我希望得到一些帮助的第一个障碍是密码加密。我发现 VisualSVN 有一个名为的密码文件,htpasswd其中包含以下格式的用户列表:

JoePublic:$apr1$lpq$kF8nZjjuFxgJBExK8ruf20

JoePublic 是用户名,我认为冒号是分隔符,其余的是某种密码哈希。在这种情况下使用的实际密码是ForgetMeNot.

这似乎不是 MD5 或 SHA 哈希,但我在这方面不是很世俗,所以很可能是。鉴于上述信息,任何人都可以推断出正在使用的算法吗?

4

3 回答 3

3

如果您需要该功能,则需要与 Active Directory 集成,这确实是一个好主意,因此用户不必管理多个单独的密码。

于 2010-12-04T21:47:25.330 回答
3

您无法通过 Web 界面重置用户密码,但是 VisualSVN Server 的 WMI(Windows 管理规范)提供程序允许您重置密码。即您可以通过 WMI 访问 VisualSVN 服务器,这样您就可以使用各种编程语言编写脚本来管理服务器并自动执行维护任务。

请参阅Windows Management Instrumentation 接口参考

不幸的是,没有记录 VisualSVN Server WMI 提供程序,但是您可以查看描述可用类、方法和属性的 MOF 文件。您还可以查看WMI 管理工具,当您想探索 WMI 基础架构时,此工具包非常有用。

以下 PowerShell 脚本将为位于您网络上的 VisualSVN 服务器实例上qwerty123的 Subversion 用户设置密码。usernamecomputer.contoso.com

$svnuser = Get-WmiObject -Namespace Root\VisualSVN -ComputerName computer.contoso.com -query "select * from VisualSVN_User where name = 'username'"
$svnuser.SetPassword('qwerty123')

请注意,此脚本是一个示例,您可能需要调整命令以在您的环境中工作。例如,您可能需要传递“-credential”参数才能成功进行身份验证。确保您进行身份验证的用户帐户具有管理员权限,或者至少是 VisualSVN Server Admins 本地组的成员。

于 2013-02-20T12:57:43.573 回答
2

VisualSVN使用的密码md5格式为htpasswd. 基本上要测试,使用这个:

htpasswd -cm test.htpass JoePublic

并验证结果。

于 2011-12-21T04:34:37.620 回答