Jump to content

Webservice + Certificados


Flinger

Recommended Posts

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?

Edited by Flinger
Link to comment
Share on other 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

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other 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.

Link to comment
Share on other 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

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.