C# 如何在没有密码的情况下访问Cmis?
我正在尝试使用DotCmis()通过cmis查询Alfresco 只要我指定一个用户/密码,它就可以正常工作 我如何在不指定密码的情况下执行此操作?我想用CurrentIdentity之类的,但我不能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
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,对吗?