4

我正在尝试使用 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一无所知,所以我在这里迷失了。

可以实现吗?还是您可以建议任何其他图书馆?

非常感谢你,如果你能帮忙!!

4

5 回答 5

2

不确定这会有所帮助,但是:

dotCMIS 将在下一版本 (0.5) NTLM 中支持,对于 0.4,您可以下载补丁 https://issues.apache.org/jira/browse/CMIS-531或从主干https://svn.apache 获取整个源代码 .org/repos/asf/chemistry/dotcmis/trunk/

于 2012-06-08T00:29:26.023 回答
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线路。
确保不定义用户名和密码,否则将不起作用。

完整的工作示例 C# 解决方案

于 2013-10-28T08:16:35.857 回答
1

我向 DotCmis 提交了一个补丁,现在最新版本可以与 Ntlm 一起使用。这在我这边在 Alfresco 上进行了测试。

抱歉,我在这里回答的时间太长了。

于 2012-06-11T13:40:38.287 回答
0

我不熟悉CMIS。从您的代码看来,参数未传递给服务器。您是否需要通过添加参数来做不同的事情?例如,

parameters.add(value, key....);
于 2012-05-09T15:44:26.507 回答
0

在 WS-Security (UsernameToken) 中默认启用,并且必须提供用户名和密码。尝试禁用 WS-Security

我不熟悉CMIS

在这里检查..可能会有所帮助

https://svn.apache.org/repos/infra/websites/production/chemistry/content/opencmis-client-bindings.html

于 2012-05-09T15:52:41.757 回答