【问题标题】:Can I authenticate SVN users against an SQL Server database table?我可以根据 SQL Server 数据库表对 SVN 用户进行身份验证吗?
【发布时间】:2012-11-30 02:59:59
【问题描述】:

我正在尝试为 Web 应用程序设置一个简单的文档管理系统。

Web 应用程序用 PHP 编写并使用 MSSQL DB。

在 MSSQL 数据库中,我有一个表“Persons”,用于标识 Persons,一个表“Logins”包含登录到 Table Persons 中的行,另一个名为“SchoolClass”的表包含学校的 SchoolClasses。

通过另一个表“PersonsToSchoolClasses”,我能够确定哪个 Person 属于哪个班级。

当我们现在看到这个时,我们可以认识到,表“类”包含我们在 SVN 中需要的组,而“人”包含用户。
该类及其关联经常会发生变化。

现在我尝试使用 svn。我意识到这正是我所需要的。

我尝试使用 stackoverflow.com 上发布的以下问题进行设置: How to set permissions in an svn repository?

这里描述了我必须手动配置每个组和每个用户。

现在终于是我的问题了:
是否可以从数据库表中配置组和用户?也许用 SQL ? 我不希望有一些文件存储所有用户和组。密码也已经包含在数据库中。我只需要一种方法,让 SVN 获取这些表并使用它。

【问题讨论】:

    标签: php sql-server apache svn


    【解决方案1】:

    是否可以从数据库表中配置组和用户

    视情况而定。

    如果您通过mod_dav_svn 将Subversion 与Apache 一起使用,那么实际上处理身份验证的不是Subversion,而是Apache。这意味着您可以使用 Apache 支持的 any 方法来执行身份验证。您链接到的问题完全是关于使用 svnserve 程序,而不是 Apache。

    看来您可以使用 Apache 的 mod_authn_dbd 来设置身份验证,并使用 mod_dbd 来设置数据库访问权限。

    根据文档,mod_dbd 可以使用 FreeTDS 库连接到 MS SQL Server。但是,此功能附带了一个大胖子security warning。简而言之,FreeTDS 不支持带有参数化查询的预处理语句。这意味着除非您非常小心,否则用户可能会执行 SQL 注入攻击。

    这样做还有另一个缺点。除非您碰巧已经有这些模块可供您使用,否则您将需要编译它们。目前尚不清楚您使用的是 Linux 还是 Windows,但无论如何它都会成为真正的熊。

    还有一个 ODBC 驱动程序,但它在文档中被描述为来自第三方,这意味着您几乎肯定必须编译它。

    老实说,我不建议您使用这种方法,除非您的模块已经触手可及。仅仅写出一个.htpasswd 文件是没有的耻辱。请记住use Digest authentication

    【讨论】:

    • 感谢您非常有帮助的回答。直到现在我才投票赞成。我会查看并尝试您提到的有关 dbd 等的内容。如果它解决了所有问题,我肯定会将其标记为“已接受的答案”。我非常感谢您在这里所做的工作。
    • 是的,这有点令人沮丧。但是您的 Anwser 正是我所需要的,而且非常有帮助。谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2021-01-02
    • 1970-01-01
    相关资源
    最近更新 更多