• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sign in to follow this  
Followers 0
Flinger

Webservice + Certificados

4 posts in this topic

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
0

Share this post


Link to post
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

0

Share this post


Link to post
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.

0

Share this post


Link to post
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

0

Share this post


Link to post
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
Sign in to follow this  
Followers 0