Flinger

Webservice + Certificados

4 mensagens neste tópico

Bons dias.

Não tenho a certeza se isto devia estar aqui ou na secção de redes, mas como o objectivo é configurar o webservice pareceu-me mais correcto aqui.

Tenho um webservice Restfull, configurado e a funcionar perfeitamente no IIS 7.5. Mas agora preciso passar o Webservice para https, de forma a garantir a segurança da comunicação. Mas aqui é que a porca torce o rabo :S Parece que não consigo acertar com as configurações nem a tiro...

Já alterei o web.config, e tenho a binding para https no IIS, mas ao tentar aceder obtenho falha na autenticação (403.7 ). Faço o teste apartir do meu PC com o fiddler, e obtenho o mesmo, apesar de ter colocado o certificado no sítio indicado.

Vejo montes de configurações, todas diferentes, mas nenhuma se parece enquadrar no que eu quero: Este é o meu Web.Config:

<configuration>
<system.web>
	<compilation targetFramework="4.0" />
</system.web>
<system.serviceModel>
 <bindings>
	<webHttpBinding>
	  <binding name="Mybinding" maxReceivedMessageSize="900000" maxBufferSize="900000" >
		<security mode="Transport" >
		  <transport clientCredentialType="Certificate" />
		</security>
	  </binding>
	</webHttpBinding>
  </bindings>
  <services>
	<!-- The name of the service -->
	<service name="MyLibrary.IMyInterface">
	  <!-- you can leave the address blank or specify your end point URI -->
	  <endpoint address="" binding="webHttpBinding"  bindingConfiguration="Mybinding" contract="MyLibrary.IMyInterface">
	  </endpoint>
	</service>
  </services>
  <behaviors>
	  <serviceBehaviors>
		  <behavior name="">
			  <serviceMetadata httpsGetEnabled="true" />
			  <dataContractSerializer maxItemsInObjectGraph="500000"/>
			  <serviceDebug includeExceptionDetailInFaults="false" />
		  </behavior>
	  </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
	<security>
		<requestFiltering>
			<requestLimits maxAllowedContentLength="300000000" maxQueryString="500000" >
				<headerLimits>
					<add header="Content" sizeLimit="500000000" />
				</headerLimits>
			</requestLimits>
		</requestFiltering>
	</security>
</system.webServer>
</configuration>

Falta-me alguma coisa na security? Tenho de dizer qual é o certificado que vai ser usado, ou isso fica a cargo do IIS?

Editado por Flinger
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens aí <transport clientCredentialType="Certificate" /> no binding do teu serviço.

Isso indica que o cliente tem que enviar um certificado.

É isso que pretendes, ou queres que seja apenas o servidor a ter certificado?

Se não pretendes isso, experimenta retirar e testar.

Tens aqui a explicação sobre o que estás a utilizar:

http://msdn.microsoft.com/en-us/library/ms731074.aspx

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, entretanto cheguei lá. Mudei para "None" e funcionou. Se não estou em erro, com esta configuração, as comunicações são encriptadas usando o certificado do servidor, certo?

Obrigado pelo link. Parece-me estar tudo bem explicado... Navegar na ajuda da microsoft à vezes parece-me como andar num carrocel, e dos foleirinhos... Mas vai servir caso decida colocar um certificado do lado do cliente, para o autenticar com o servidor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao teres o securiy mode = transport indicas que queres utilizar o SSL.

Por omissão funciona da mesma forma que um browser a aceder a um site por https, é feita a negociação do certificado.

As client credentials só são necessárias se quiseres que o cliente do serviço se autentique. Se não for uma necessidade não precisas por nada, caso contrário deves por a forma de autenticação que pretendes que o cliente faça.

Podes ver os tipos de autenticação possiveis aqui:

http://msdn.microsoft.com/en-us/library/ms733836.aspx

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora