我正在尝试使用DotCmis(http://chemistry.apache.org/dotnet/dotcmis.html)通过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文档,似乎你可以使用CmisBindingFactory作为ntlm,但我认为dotCmis不支持它。 我对java / apache一无所知,所以我在这里非常失落。
可以实现吗?或者你可以建议其他图书馆吗?
如果你能提供帮助,真的非常感谢你!
答案 0 :(得分:2)
不确定这会有所帮助但是:
dotCMIS将支持下一个版本(0.5)NTLM,对于0.4你可以下载补丁 https://issues.apache.org/jira/browse/CMIS-531 或从主干获得整个来源 https://svn.apache.org/repos/asf/chemistry/dotcmis/trunk/答案 1 :(得分:2)
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);
}
请注意AuthenticationProviderClass
行
确保不要定义用户名和密码,否则它将无效。
答案 2 :(得分:1)
我向DotCmis提交了一个补丁,现在最新版本与Ntlm一起使用。 这是我在Alfresco身上测试过的。
对不起,我花了太长时间才回答这个问题。
答案 3 :(得分:0)
我不熟悉CMIS。从您的代码中,看起来这些参数不会传递给服务器。你需要通过添加参数来做到这一点吗?例如,
parameters.add(value, key....);
答案 4 :(得分:0)
默认情况下启用WS-Security(UsernameToken)中的和用户名 并且必须提供密码。尝试禁用WS-Security
我不熟悉CMIS
在这里查看..可能有帮助