Pergunta

Estou tentando fazer referência a um item da lista do SharePoint na minha página aspx usando o modelo de objeto do cliente do SharePoint.Recebi privilégios de 'Controle Total' nesta lista.O problema é que só consigo concluir a solicitação quando defino ClientContext.Credentials explicitamente com minha senha codificada na página.Obviamente, não quero que os visitantes do meu site tenham acesso a coisas com base nas minhas credenciais.

Isso faz com que funcione, mas não atende aos requisitos do projeto:

ClientContext cc = new ClientContext("http://sharepoint.site.com/sitename");
cc.Credentials = new NetworkCredential("username", "password", "domain");

Eu configurei no web.config e parece estar funcionando bem.Quando eu verifico WindowsIdentity.GetCurrent().Name mostra minhas informações corretas de "domínio ome de usuário", o que acho que deveria significar que minhas credenciais são válidas.Por que então o SharePoint está rejeitando a cc.ExecuteQuery(); com um "System.Net.WebException O servidor remoto retornou um erro:(401 não autorizado."?

Posso colocar uma caixa de texto na tela que permite ao usuário inserir sua senha usada para criar um objeto NetworkCredential, mas posso dizer agora que o cliente (meu chefe) não vai ficar satisfeito com isso e vai me dizer que ele quer que eu encontre uma solução alternativa.

Editar:O site do sharepoint está hospedado em um site diferente, mas na mesma intranet da empresa.

Foi útil?

Solução

Você está usando Kerberos, NTLM, formulários ou declarações?Meu palpite é que você está usando NTLM e enfrentando o "problema" de salto duplo do NTLM.

http://blogs.msdn.com/b/besidethepoint/archive/2010/05/09/double-hop-authentication-why-ntlm-fails-and-kerberos-works.aspx

A próxima etapa mais fácil é provavelmente mudar seu site para Kerberos.Tenho um artigo no blog onde descrevi alguns recursos que ajudam na configuração do Kerberos no SharePoint.

http://steve.thelineberrys.com/resources-for-setting-up-kerberos-authentication-in-sharepoint/

Outras dicas

Você já tentou usar DefaultCredentials em vez disso, para obter a identidade do usuário atual?

Adicionalmente:este aspx está sendo executado no seu site do SharePoint?Se sim, por que você está usando o modelo de objeto cliente?Basta usar o servidor OM.Muito mais fácil e com muito menos complicações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top