Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有密码的情况下访问Cmis?_C#_Alfresco_Ntlm_Cmis_Dotcmis - Fatal编程技术网

C# 如何在没有密码的情况下访问Cmis?

C# 如何在没有密码的情况下访问Cmis?,c#,alfresco,ntlm,cmis,dotcmis,C#,Alfresco,Ntlm,Cmis,Dotcmis,我正在尝试使用DotCmis()通过cmis查询Alfresco 只要我指定一个用户/密码,它就可以正常工作 我如何在不指定密码的情况下执行此操作?我想用CurrentIdentity之类的,但我不能 parameters[SessionParameter.BindingType] = BindingType.AtomPub; parameters[SessionParameter.AtomPubUrl] = "http://server/alfresco/service/cmis"; para

我正在尝试使用DotCmis()通过cmis查询Alfresco

只要我指定一个用户/密码,它就可以正常工作

我如何在不指定密码的情况下执行此操作?我想用CurrentIdentity之类的,但我不能

parameters[SessionParameter.BindingType] = BindingType.AtomPub;
parameters[SessionParameter.AtomPubUrl] = "http://server/alfresco/service/cmis";
parameters[SessionParameter.User] = "user";
parameters[SessionParameter.Password] = "password";
通过Apache文档,似乎可以为ntlm使用CmisBindingFactory,但我认为dotCmis不支持它。 我对java/apache一无所知,所以我在这里完全迷路了

这能实现吗?或者你可以推荐其他图书馆吗


如果你能帮忙,我真的非常感谢你

我不熟悉CMIS。从代码来看,参数似乎没有传递到服务器。您是否需要通过添加参数来进行不同的操作?比如说,

parameters.add(value, key....);
在WS-Security中,默认情况下启用(UsernameToken)并使用用户名 并且必须提供密码。尝试禁用WS-Security

我不熟悉CMIS

在这里查一下。。可能会有帮助


不确定这是否有帮助,但:

dotCMIS将在下一个版本(0.5)NTLM中支持,对于0.4,您可以下载补丁 或者从主干获取整个源

我向DotCmis提交了一个补丁,现在最新的版本可以使用Ntlm。 这是我在露天进行的测试


很抱歉,我花了太长时间才在这里回答。

DotCMIS 0.5已经发布,多亏了Vincent,现在应该可以开箱即用了:-)

示例代码:

// Parameters.
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters[SessionParameter.AtomPubUrl] = "http://yourserver:port/alfresco/cmisatom"; // Change this to yours.
parameters[SessionParameter.BindingType] = BindingType.AtomPub;
parameters[SessionParameter.AuthenticationProviderClass] = "DotCMIS.Binding.NtlmAuthenticationProvider";

// No need for username and password, thanks to NTLM-based SSO (Single Sign On)
//parameters[SessionParameter.User] = "<username>";
//parameters[SessionParameter.Password] = "<password>";

SessionFactory factory = SessionFactory.NewInstance();
ISession session = factory.GetRepositories(parameters)[0].CreateSession();

// List all children of the root folder.
IFolder rootFolder = session.GetRootFolder();
foreach (ICmisObject cmisObject in rootFolder.GetChildren())
{
    Console.WriteLine(cmisObject.Name);
}
//参数。
字典参数=新字典();
参数[SessionParameter.AtomPubUrl]=”http://yourserver:port/alfresco/cmisatom"; // 把这个换成你的。
参数[SessionParameter.BindingType]=BindingType.AtomPub;
参数[SessionParameter.AuthenticationProviderClass]=“DotCMIS.Binding.NtlmAuthenticationProvider”;
//由于基于NTLM的SSO(单点登录),无需用户名和密码
//参数[SessionParameter.User]=“”;
//参数[SessionParameter.Password]=“”;
SessionFactory=SessionFactory.NewInstance();
ISession session=factory.GetRepositories(参数)[0].CreateSession();
//列出根文件夹的所有子文件夹。
IFolder rootFolder=session.GetRootFolder();
foreach(rootFolder.GetChildren()中的icmisbject-cmisbject)
{
Console.WriteLine(cmisObject.Name);
}
请注意
AuthenticationProviderClass
行。
请确保不要定义用户名和密码,否则它将无法工作


.

我认为您无法做到这一点,我也无法通过Web服务手动登录。这里应该有一个ntlm参数。我认为:但据我所研究,它没有在dotCMIS中实现,而且我不知道如何添加它。是否要执行匿名(来宾)请求,还是你想做一些单点登录的魔术?非常感谢你的补丁!要明确的是,这是用于基于NTLM的SSO(Alfresco passthru+ldap ad),而不是用于基于Kerberos的SSO,对吗?