Flinger Posted July 13, 2012 at 09:23 AM Report Share #468542 Posted July 13, 2012 at 09:23 AM (edited) 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 July 13, 2012 at 09:23 AM by Flinger Link to comment Share on other sites More sharing options...
bruno1234 Posted July 13, 2012 at 06:15 PM Report Share #468623 Posted July 13, 2012 at 06:15 PM 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 More sharing options...
Flinger Posted July 13, 2012 at 10:29 PM Author Report Share #468639 Posted July 13, 2012 at 10:29 PM 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 More sharing options...
bruno1234 Posted July 13, 2012 at 11:11 PM Report Share #468642 Posted July 13, 2012 at 11:11 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now