使用SharpSVN进行SVN存储库验证

时间:2010-06-23 06:34:50

标签: svn authentication sharpsvn

任何人都可以告诉我如何使用SharpSVN Library对存储库的用户(SVN用户)进行身份验证。 该存储库只应由这些用户提交。 谢谢

4 个答案:

答案 0 :(得分:46)

使用SVNClient的验证属性:

client.Authentication.Clear(); // Clear a previous authentication
client.Authentication.DefaultCredentials = new System.Net.NetworkCredential("user", "password");

答案 1 :(得分:14)

client.Authentication.ForceCredentials("user", "password");

对于那些不想吹走你的默认凭据的人(如果你在同一台机器上运行TortoiseSVN)。

答案 2 :(得分:9)

您还可以通过向SslServerTrustHandlers添加事件处理程序来覆盖SSL证书错误,如下所示:

SVN_Conn.Authentication.SslServerTrustHandlers += new EventHandler<SharpSvn.Security.SvnSslServerTrustEventArgs>(SVN_SSL_Override);

static void SVN_SSL_Override(object sender, SharpSvn.Security.SvnSslServerTrustEventArgs e)
{
    e.AcceptedFailures = e.Failures;
    e.Save = true;
}

答案 3 :(得分:2)

在我的情况下,SVN服务器运行VisualSVN Server 3.5.3并启用了集成Windows身份验证。使用SharpSvn 1.9004.3879.127,SVN客户端尝试使用Windows身份验证,即使我使用用户名和密码进行配置:

client = new SvnClient();
client.Authentication.Clear(); //Prevents saving/loading config to/from disk
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password");

当应用程序代码由无法访问存储库的Windows用户运行时,会导致以下错误:

  

SvnRepositoryIOException:无法连接到URL&#39; https://mysvnserver/svn/reponame&#39;

的存储库

我通过only allowing basic and digest authentication修正了这个问题:

client = new SvnClient();
client.Configuration.SetOption("servers", "global", "http-auth-types", "basic;digest");
client.Authentication.Clear(); // Prevents saving/loading config to/from disk
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password");