Problema NTLM di Sharepoint 2007 con l'App Web ASP.NET ospitata sul server Sharepoint

StackOverflow https://stackoverflow.com/questions/262442

  •  06-07-2019
  •  | 
  •  

Domanda

Sto ospitando un'applicazione Web ASP.NET su una casella di Sharepoint 2007, che effettua una chiamata del servizio Web a Sharepoint per recuperare una posizione del documento (in particolare, il metodo GetListItems).

Il servizio viene utilizzato con le credenziali passate di un account Sharepoint valido con autorizzazioni appropriate.

ListServiceWrapper listService = new ListServiceWrapper();

/*Pass credentials to service call object*/
listService.Credentials = new NetworkCredential(spUserName, spPassword, spDomain);

/*Set the Url property of the service for the path to a subsite.*/
listService.Url = ConfigurationManager.AppSettings.Get("rootSite") + "/_vti_bin/lists.asmx";

Quando l'app Web viene eseguita localmente sulla mia casella di sviluppo (sono un utente Sharepoint sullo stesso dominio), la chiamata di servizio funziona alla grande. Quando viene distribuito nella casella Sharepoint, l'applicazione restituisce:

  

Richiesta non riuscita con stato HTTP   401: Non autorizzato.

Abbiamo provato a cambiare l'utente del pool di app dell'app Web nella casella Sharepoint in un utente autorizzato di Sharepoint, ma non abbiamo ancora avuto fortuna. Immagino che se cambiassimo l'autenticazione di Sharepoint in Kerberos anziché in NTLM, risolverebbe il problema. Purtroppo questa non è un'opzione qui. Questo ha forse a che fare con il problema del doppio hop NLTM?

È stato utile?

Soluzione

Sì, questo è legato al problema del doppio hop.
In NTLM non è consentito eseguire l'autenticazione su servizi remoti. Come hai detto, avrai bisogno di Kerberos per delegare le credenziali ad altri servizi.

Opzioni che puoi provare:

  • Passa a Kerberos. Questa è l'unica soluzione corretta, ma non è così semplice in quanto dovrai creare tutto SPN ed essere sicuro che la porta 88 sia aperta.
  • Installa l'applicazione ASP.Net nella casella di SharePoint e attiva DisableLoopbackCheck
  • Utilizzare un account di servizio per accedere a SharePoint. In questo caso, SharePoint non verrà eseguito con l'account utente, quindi dovrai gestire tu stesso la sicurezza
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top