Senha requerida?O servidor remoto retornou um erro:(401 não autorizado
-
10-12-2019 - |
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.
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.
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.