2017-09-13 3 views
0

私のC#アプリケーションはSharepointにデプロイされており、C#のEMC DOCUMENTUM D2からドキュメントをダウンロードし、Sharepoint Documentライブラリにアップロードします。 私はkerberos認証をシングルサインオンに使用しています.Kerberosはドキュメントを検索するときにうまく動作しますが、D2からドキュメントをダウンロードしようとすると、サービスアカウントがコードを使用してドキュメントをダウンロードしています。 Documentumの着信トラフィックログを参照してください)。Kerberos認証を使用しているときに、EMC DOCUMENTUM D2からC#コードにドキュメントをダウンロードするにはどうすればよいですか?

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); 
     } 
    } 

答えて

0

私は問題を解決できました。 ケルベロスの問題ではありませんでしたが、実際に呼び出す関数の場所の問題でした。 Kerberos認証を開始する機能があるため、Kerberos認証は、文書をダウンロードするには、サービスアカウントを利用した本の

using(SPSecurity.RunWithElevatedPrivileges) 
{ 

} 

内でした。

関連する問題