Pergunta

Se eu passar os atuais credenciais de usuários para um webservice usando system.net.credentialcache.defaultcredentials, da maneira que a informação será transferida? Eu não acho que ele vai ser um texto claro, assim que as credenciais devem ser criptografadas, mas como são eles?

Foi útil?

Solução

Depende do que as solicitações do servidor na resposta HEAD.

Por exemplo, se eu executar uma solicitação HEAD para o seu serviço web e um dos cabeçalhos HTTP em sua resposta é "WWW-Authenticate: NTLM", em seguida, as credenciais armazenadas em DefaultCredentials seria criptografada usando NTLM e depois enviado com a plena GET / POST / PUT / whatever. Para garantir que isso acontece, você precisa ter certeza de que o seu servidor web está configurado para autenticação de solicitação de NTLM. Em IIS, este é um caso de selecionar "autenticação integrada do Windows". Eu não estou certo sobre o Tomcat, mas esta pós olhares pertinente.

No entanto, se suas respostas web servidor com "WWW-Authenticate: Basic" para um determinado recurso (o que implicaria o envio dos creds em texto claro, codificado (NOTA: não criptografada) como base 64) , você vai ter um ArgumentException como ele é considerado uma exceção de segurança para enviar credenciais de sua conta mais de autenticação básica.

servidores Web também pode ser configurado para aceitar vários métodos de autenticação, mas você deve sempre estar preparado para aceitar o mais fraco desses, então oferecer autenticação básica como uma "queda-back" significa que alguns de seus usuários pode muito bem ser o envio de suas credenciais em texto claro.

Um navegador normalmente irá selecionar o método mais forte de que dispõe, e eu suspeito que (mas não sei ao certo) que as bibliotecas .net irá se comportar da mesma maneira.

Editar

Enquanto o seu servidor web única solicita NTLM para o seu serviço web, você pode estar certo de que qualquer cliente sensato não enviará as credenciais em texto claro. Usando as classes líquidas no âmbito .net, você pode ter certeza que se você usar DefaultCredentials, e não manualmente injetar um cabeçalho básico auth si mesmo, suas credenciais serão enviadas criptografadas usando NTLM.

As suas credenciais chegarão ao servidor como um grande criptografado bagunça, para ninguém, mas o servidor web, que irá descriptografar os a ver que eles incluem o nome de usuário, senha e domínio para o usuário conectado no momento.

As credenciais DefaultCredentials vai enviar até depender do tipo de aplicação solicitado DefaultCredentails. Se é uma aplicação cliente em execução sob uma conta de usuário, as credenciais será que o usuário do. Se é uma aplicação ASP.NET que está se comunicando com o seu serviço web, ele irá usar as credenciais para a conta que o pool de aplicativo está sendo executado em, por padrão, este é NETWORK_SERVICE.

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