使用 Kerberos 身份验证时,如何将文档从 EMC DOCUMENTUM D2 下载到我的 C# 代码中?
How do i download document from EMC DOCUMENTUM D2 into my C# code while using Kerberos authentication?
我的 C# 应用程序部署在 Sharepoint 中,我想从 C# 中的 EMC DOCUMENTUM D2 下载文档,然后将其上传到 Sharepoint 文档库中。
我正在使用 kerberos 身份验证进行单点登录 on.Kerberos 在我搜索文档时工作正常但是当我尝试从 D2 下载文档时不知何故代码正在使用服务帐户来下载文档(我知道它使用服务帐户时我看到了 Documentum 的传入流量日志)。
IObjectService objectService = this.GetRemoteServiceDownload<IObjectService>(moduleName);
函数的定义。
protected IObjectService GetRemoteServiceDownload<IObjectService>(string serviceModule)
{
KerberosTokenHandler handler = new KerberosTokenHandler();
try
{
using (KerberosClientContext kerberosClientContext = new KerberosClientContext(servicePrincipalName, true, ImpersonationLevel.Delegation))
{
try
{
KerberosBinarySecurityToken token = new KerberosBinarySecurityToken(kerberosClientContext.InitializeContext(), KerberosValueType.KERBEROSV5_AP_REQ);
handler.SetBinarySecurityToken(token);
List<IEndpointBehavior> handlers = new List<IEndpointBehavior>();
handlers.Add(handler);
handlers.Add(new DFSBindingBehaviour(0, 10, 0, 0, 10, 0, 40960, 32, 16384, 16384, 20000000));
var remoteService = ServiceFactory.Instance.GetRemoteService<IObjectService>(serviceContext, serviceModule, address, handlers);
return remoteService;
}
catch (Exception ex)
{
Service.LoggerService.SetError(new Exception("In GetRemoteService" + ex.Message, ex));
return default(IObjectService);
}
}
}
catch (Exception ex)
{
Service.LoggerService.SetError(new Exception("In GetRemoteService using" + ex.Message, ex));
return default(IObjectService);
}
}
伙计们,我能够解决问题!。
这不是 kerberos 问题,实际上是调用函数位置的问题。
启动 Kerberos 身份验证的函数在
内
using(SPSecurity.RunWithElevatedPrivileges )
{
}
因此,Kerberos 身份验证正在使用服务帐户下载文档。
我的 C# 应用程序部署在 Sharepoint 中,我想从 C# 中的 EMC DOCUMENTUM D2 下载文档,然后将其上传到 Sharepoint 文档库中。 我正在使用 kerberos 身份验证进行单点登录 on.Kerberos 在我搜索文档时工作正常但是当我尝试从 D2 下载文档时不知何故代码正在使用服务帐户来下载文档(我知道它使用服务帐户时我看到了 Documentum 的传入流量日志)。
IObjectService objectService = this.GetRemoteServiceDownload<IObjectService>(moduleName);
函数的定义。
protected IObjectService GetRemoteServiceDownload<IObjectService>(string serviceModule)
{
KerberosTokenHandler handler = new KerberosTokenHandler();
try
{
using (KerberosClientContext kerberosClientContext = new KerberosClientContext(servicePrincipalName, true, ImpersonationLevel.Delegation))
{
try
{
KerberosBinarySecurityToken token = new KerberosBinarySecurityToken(kerberosClientContext.InitializeContext(), KerberosValueType.KERBEROSV5_AP_REQ);
handler.SetBinarySecurityToken(token);
List<IEndpointBehavior> handlers = new List<IEndpointBehavior>();
handlers.Add(handler);
handlers.Add(new DFSBindingBehaviour(0, 10, 0, 0, 10, 0, 40960, 32, 16384, 16384, 20000000));
var remoteService = ServiceFactory.Instance.GetRemoteService<IObjectService>(serviceContext, serviceModule, address, handlers);
return remoteService;
}
catch (Exception ex)
{
Service.LoggerService.SetError(new Exception("In GetRemoteService" + ex.Message, ex));
return default(IObjectService);
}
}
}
catch (Exception ex)
{
Service.LoggerService.SetError(new Exception("In GetRemoteService using" + ex.Message, ex));
return default(IObjectService);
}
}
伙计们,我能够解决问题!。 这不是 kerberos 问题,实际上是调用函数位置的问题。 启动 Kerberos 身份验证的函数在
内using(SPSecurity.RunWithElevatedPrivileges )
{
}
因此,Kerberos 身份验证正在使用服务帐户下载文档。