2012-05-09 137 views
4

我试图用DotCmis通过cmis查询Alfresco(http://chemistry.apache.org/dotnet/dotcmis.html如何在没有密码的情况下访问Cmis?

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

如何在不指定密码的情况下做到这一点?我想用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

你想执行一个匿名(来宾)请求,或者你想要做某种单点登录魔术吗? – Gagravarr

+1

一些神奇的SSO! – Vincent

回答

1

我向DotCmis提交了补丁,现在最新的构建与Ntlm一起使用。 这在Alfresco的我身边进行了测试。

对不起,我花了太多的时间在这里回答。

+0

谢谢很多补丁!很明显,这是基于NTLM的SSO(Alfresco passthru + ldap-ad),不是基于Kerberos的SSO,对吧? –

0

我不熟悉CMIS。从你的代码看来,参数不会传递给服务器。你需要通过添加参数以不同的方式做到这一点吗?例如,

parameters.add(value, key....); 
+0

应该有一个ntlm参数我想:http://chemistry.apache.org/java/0.7.0/maven/apidocs/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory。html#NTLM_AUTHENTICATION_PROVIDER,但它没有在dotCMIS中实现,据我所知,我不知道如何添加它 – Vincent

2

DotCMIS 0.5已经发布,因此非常感谢文森特它应该工作外的开箱现在:-)

示例代码:

// 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线。
请确保不定义用户名和密码,否则将无法使用。

Full working sample C# solution

相关问题