Pergunta

Em certas circunstâncias, o meu aplicativo de desktop usando extremidades do SharePoint Web Services com DefaultNetworkCredentials ter valores nulos, e assim a chamada falha. Eu preciso, em seguida, obter as credenciais de usuários, mas eu não encontrei uma maneira straightfoward a fazê-lo.

Estou pensando em implementar a solução descrita no http: // www. pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html

... No entanto, isso ainda vai exigir que eu lidar com a senha, que eu prefiro não realmente. Eu olhei, mas não foram capazes de encontrar um método mais direto que solicita ao usuário e retorna um NetworkCredential diretamente, sem eu ter que armazenar a senha?

Obrigado,

EDIT: Parece que eu não estou indo para encontrar exatamente o que estou procurando ... Vou ter de pedir ao utilizador-me quando isso acontece.

No entanto, se eu estou interpretando algumas dessas respostas corretamente, pode ser uma condição de erro para os DefaultNetworkCredentials para ser nulo como esta em primeiro lugar. É esse o caso? Existe uma maneira de forçar os DefaultNetworkCredentials para preencher, ou é realmente um cache simples que é apenas lembrando o último domínio / ID do usuário / senha usada para o destino URI (naquele dia? Que a aplicação / sessão?).

Foi útil?

Solução

Eu não acho que você pode evitar lidar com eles pela primeira vez. Mas, você um gancho para o Gerenciador de Credenciais para que eles serão armazenados em cache a partir desse ponto em diante. Aqui está um artigo sobre como fazer isso . É pesado em P / Invoke, mas poderia dar a seus usuários uma experiência mais consistente.

Outras dicas

O trabalho sobre a questão subjacente, as credenciais nulos, em vez de chatear o usuário para informações que já entrou.

A menos que você quer que eles sejam capazes de entrar em SharePoint diferente do o conta corrente (um recurso útil, talvez).

.NET tem o código para lidar com credenciais, então por que adivinhar que, indo para externa dll e adicionando outra dependência para seu aplicativo?

Eu não sei o suficiente sobre os riscos de segurança de código que você tem em seu ambiente, mas eu teria pensado que armazenar as credenciais de objeto na memória cliente só seria "bastante seguro" para a maioria das situações.

Eu não sei de algo que lida com a senha para você, mas SecureString podem ser de uso.

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