Domanda

Sto cercando di pubblicare documenti dai siti di SharePoint tramite il connettore CMS di Microsoft.

L'applicazione di consumo è multipla, incluso un portale di Liferay (in esecuzione su Linux), e altra farm di SharePoint 2010 (altro dominio, nessuna fiducia) con la web part del consumatore CMIS.

L'obiettivo finale è essere in grado di riflettere le autorizzazioni dell'utente sul lato consumante.

Il primo obiettivo, è almeno quello di mostrare un documento anonimo dai consumatori.

Ecco i dettagli del mio sito di produttori:

    .
  • L'autenticazione dei reclami è abilitata.
  • tre URL sono raggiungibili per l'applicazione Web:
      .
    • https://site.corp.com : AUTH FBA, basato su un reindirizzamento dell'autenticazione CAS
    • http://a.site.corp.com : Anonymous e FBA Auth
    • http://admin.site.corp.com : Windos Auth per Amministrazione + Anonymous + FBA
    • Gli utenti anonimi sono autorizzati a vedere il contenuto del sito intero

      Il primo test non riuscito che ho fatto, è quello di aggiungere il webpart del consumatore CMIS nella mia altra fattoria (come ho detto, non c'è fiducia tra le fattorie né tra i domini).

      Quando rilascio il WebPart, apro il riquadro degli strumenti e specifica http://a.site.corp/sites/testcmis/_vti_bin/CMISSoapwsdl.aspx come indirizzo WSDL. Fare clic su "Ottieni un elenco di repository" e ottenere immediatamente un errore "WSDL non raggiungibile".

      Se di aprire la pagina in Internet Explorer o Chrome, posso vedere il WSDL senza autenticazione richiesta.

      Se I Fiddler il messaggio HTTP, posso vedere che ci sono due richieste:

        .
      1. Il primo sta leggendo il file WSDL senza errori (HTTP 200: OK). Posso vedere nel messaggio http il contenuto WSDL corretto
      2. Una seconda richiesta viene sparata, mirando http://a.site.corp/sites/testcmis/_vti_bin/cmis/soap/RepositoryService.svc/anonymous. Questa volta, ottengo un errore interno (HTTP 500.

        Io ottengo, come risposta, questo errore del servizio Web:

        <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
            <s:Body>
                <s:Fault>
                    <faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
                    <faultstring xml:lang="en-GB">SecurityContextProperty is missing from the request Message, this may indicate security is configured incorrectly.</faultstring>
                    <detail>
                        <ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                            <HelpLink i:nil="true"/>
                            <InnerException i:nil="true"/>
                            <Message>SecurityContextProperty is missing from the request Message, this may indicate security is configured incorrectly.</Message>
                            <StackTrace>   at System.ServiceModel.Dispatcher.SecurityImpersonationBehavior.StartImpersonation2(MessageRpc&amp; rpc, ServiceSecurityContext securityContext, Boolean isSecurityContextImpersonationOn)&#xD;
           at System.ServiceModel.Dispatcher.SecurityImpersonationBehavior.StartImpersonation(MessageRpc&amp; rpc, IDisposable&amp; impersonationContext, IPrincipal&amp; originalPrincipal, Boolean&amp; isThreadPrincipalSet)&#xD;
           at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)&#xD;
           at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)&#xD;
           at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp; rpc)&#xD;
           at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace>
                            <Type>System.InvalidOperationException</Type>
                        </ExceptionDetail>
                    </detail>
                </s:Fault>
            </s:Body>
        </s:Envelope>
        
        .

        Il faultstring mi fa infastidire. Il sito di destinazione consente anonimo, perché la comunicazione avrebbe stabilito un contesto di sicurezza?

        Il secondo test che non è stato più riuscito è necessario utilizzare il connettore del consumatore CMIS di Liferay SharePoint

        Nel portale di Liferay (non il server di produzione. Questo è stato in esecuzione su una scatola di dev in esecuzione w2k8 r2), ho provato ad aggiungere un documento repository di Kind SharePoint CMIS.

        ancora non funziona. Ancora Fiddler (che strumento meraviglioso non è vero?), Posso osservare un comportamento diverso. Anche due richieste vengono sparate (utilizzando il protocollo di riposo questa volta). Questa volta sto mirando a questo momento il prefisso degli ADRL URL:

          .
        1. La prima richiesta è recuperando i dettagli del repository utilizzando l'URL: http://adm.site.corp/sites/testcmis/_vti_bin/cmis/rest/16ff1075-1069-4066-9048-3f9a8b002fd9?getRepositoryInfo (il GUID è l'ID di una libreria documenti condivisa). Nessun errore, stato http 200
        2. La seconda richiesta se riceve un errore 403 . Fiddler mi sta mostrando un'intesta intestazione HTTP inaspettata nella risposta:
          .

          x-msdavext_error: 917656; Accesso negato. Prima di aprire i file in questa posizione, è necessario prima sfogliare il sito Web e selezionare l'opzione per accedere automaticamente.

          La query inviata tramite l'API di riposo è questa:

          <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
          <query xmlns="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:ns2="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:ns3="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
                 <statement>SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('-1')</statement>
                 <searchAllVersions>false</searchAllVersions>
                 <includeAllowableActions>true</includeAllowableActions>
                 <includeRelationships>none</includeRelationships>
                 <renditionFilter>cmis:none</renditionFilter>
                 <maxItems>1000</maxItems>
                 <skipCount>0</skipCount>
          </query>
          
          .

          E, nei registri ULS, vedo questa volta:

          SharePoint Foundation      Logging Correlation Data   xmnv   Medium Name=Request (POST:http://adm.site.corp.com:80/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?Query) 30db2510-0247-4fc5-8454-79fdd83c856d
          SharePoint Foundation      Logging Correlation Data   xmnv   Medium Site=/sites/testcmis  30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      Current request url is  http://adm.site.corp.com/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?Query  30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      Selected service: Microsoft.SharePoint.CMIS.Binding.CmisQueryService    30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      Start calling into GetCurrentWeb. 30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      statement : SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('-1') 30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      searchAllVersions : false  30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      includeRelationships : none       30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      renditionFilter : cmis:none       30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      includeAllowableActions : true    30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      maxItems : 1000     30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      skipCount : 0 30db2510-0247-4fc5-8454-79fdd83c856d
          Unknown      CMIS Repository Interfaces 0000   Verbose      Source id length is larger or equal than destination length id. Returned false.  30db2510-0247-4fc5-8454-79fdd83c856d
          SharePoint Foundation      Monitoring   b4ly   High   Leaving Monitored Scope (EnsureListItemsData). Execution Time=4.58745455078788   30db2510-0247-4fc5-8454-79fdd83c856d
          SharePoint Foundation      General      8e2s   Medium Unknown SPRequest error occurred. More information: 0x80070005   30db2510-0247-4fc5-8454-79fdd83c856d
          SharePoint Foundation      Monitoring   b4ly   Medium Leaving Monitored Scope (Request (POST:http://adm.site.corp.com:80/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?Query)). Execution Time=34.7641948906914 30db2510-0247-4fc5-8454-79fdd83c856d
          
          .

          Nota che se apro la pagina http://adm.site.corp.com/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?getRepositoryInfo nel browser, funziona (ancora senza autenticazione).

          L'ultimo test che ho fatto, è stato identico al precedente, ma usando l'URL dell'app Web anonimo

          Stessi passaggi come prima, in Liferay, cerco di recuperare le informazioni del repository all'URL: http://a.site.corp.com/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?getRepositoryInfo (di nuovo, questa pagina è raggiungibile con il browser).

            .
          1. Una prima query viene rilasciata a http://a.site.corp.com/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?getRepositoryInfo. Questo ha successo (http 200).
          2. Una seconda query su http://a.site.corp.com/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?getRepositoryInfo&repositoryId=8ae634c6-cace-48cd-a9c6-10a311fd1968. Anche questo ha successo (http 200).
          3. e un'ultima query per http://a.site.corp.com/sites/testcmis/_vti_bin/cmis/rest/8ae634c6-cace-48cd-a9c6-10a311fd1968?Query.

            L'ultima query Throw A 403 HTTP Errore (proibito). Il corpo di questa query fattive è questo (come prima):

            <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
            <query xmlns="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:ns2="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:ns3="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
                <statement>SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('-1')</statement>
                <searchAllVersions>false</searchAllVersions>
                <includeAllowableActions>true</includeAllowableActions>
                <includeRelationships>none</includeRelationships>
                <renditionFilter>cmis:none</renditionFilter>
                <maxItems>1000</maxItems>
                <skipCount>0</skipCount>
            </query>
            
            .


            .

            Per concludere, qualcuno ha mai potuto fare questo funzionamento e come?

È stato utile?

Soluzione

Concludiamo finalmente che l'utilizzo del connettore CMIS è un vicolo cieco.

Molte ragioni:

    .
  1. Il connettore è solo IT-US (può essere una soluzione alternativa creando manualmente i file di risorse).
  2. È un incubo per rendere l'app di Java ad autenticarsi contro CMIS.

  3. Ci sono così alcune risorse relative a questo connettore, che pensiamo che sia quasi non usato affatto.

  4. Se fallisce, come ottenere supporto?.Infatti, è stato meno rischioso e con un costo inferiore per costruire sia un servizio Web personalizzato in SharePoint e un connettore personalizzato nel lato dell'applicazione Java.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top