Hexagon Geospatial
MENU

GMSC Tutorials

Not sure on how to get started or looking for a workflow to get GeoMedia Smart Client up and running. Tutorials provide step by instruction on some of the most common configurations and workflows to get GeoMedia Smart Client configured up and running quickly.
Showing results for 
Search instead for 
Do you mean 

How to use GeoMedia Smart Client with HTTPS

by Technical Evangelist on ‎11-05-2015 11:09 PM - edited on ‎06-28-2018 05:34 AM by Technical Evangelist (1,577 Views)

This tutorial will show you, how you can use GeoMedia Smart Client with HTTPS.

 

There are two requisites necessary to do this:

 

  1. IIS configuration: At http://www.iis.net/learn/manage/configuring-security/how-to-set-up-ssl-on-iis there is a section named IIS Manager. This will show you how to get your certificate into the IIS manager. The example there shows how you get your own certificate into IIS and use it.
  2. Also two changes have to be made in the web.config file:

Note: You will find the web.config file in your installation directory of GeoMedia Smart Client. 

 

<system.serviceModel>
<bindings>
  <basicHttpBinding>
      <binding name="defaultBinding">
        <security mode="Transport" />
      </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
  <behavior>
   <serviceMetadata httpsGetEnabled="true" />
  </behavior>
</serviceBehaviors>
</behaviors>

 

 

If you have finished both steps from above you should be able to go to the following URL:

 

https://yourServer/GMSC

 

Then your GeoMedia Smart Client should open up in SSL Mode. 

Comments
by Technical Evangelist
3 weeks ago

Some customers noticed that the client can't start because of the fact that the WSDL's still contains references to http URL's.

 

E.g. in case of https://YOUR_SERVER/gmsc/Authorization.svc?wsdl

 

 

...
<wsdl:import namespace="http://services.intergraph.com/Emea/2011/03" location="http://YOUR_EXTERNAL_SERVER_URL.com/GMSC/Authorization.svc?wsdl=wsdl0"/>
<wsdl:types> <xsd:schema targetNamespace="http://services.intergraph.com/Emea/2011/03/Authorization/Imports"> <xsd:import schemaLocation="http://YOUR_EXTERNAL_SERVER_URL.com/GMSC/Authorization.svc?xsd=xsd0" namespace="http://services.intergraph.com/Emea/2011/03/Authorization"/> <xsd:import schemaLocation="http://YOUR_EXTERNAL_SERVER_URL.com/GMSC/Authorization.svc?xsd=xsd4" namespace="http://services.intergraph.com/Emea/2011/03/Faults"/> <xsd:import schemaLocation="http://YOUR_EXTERNAL_SERVER_URL.com/GMSC/Authorization.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/> <xsd:import schemaLocation="http://YOUR_EXTERNAL_SERVER_URL.com/GMSC/Authorization.svc?xsd=xsd2" namespace="http://services.intergraph.com/Emea/2011/03/Types"/> <xsd:import schemaLocation="http://YOUR_EXTERNAL_SERVER_URL.com/GMSC/Authorization.svc?xsd=xsd3" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> </xsd:schema> </wsdl:types>
...

 

 

This is caused by a technical limitation of WCF and happens in case of SSL-Offloading which means that the external traffic is encrypted and the internal still uses http.

 

Outside (https) -> [Load Balancer] -> Inside (http)

 

First of all, please note that the changes (basicHttpBinding and httpsGetEnabled) which were mentioned at this tutorial are not necessary in case of SSL-Offloading.

 

Web.config changes for SSL-Offloading:

  1. Ensure that the following header information will be forwared to the internal server:
    X-FORWARDED-PROTO
    X-FORWARDED-HOST
  2. Install the URL Rewrite Module at your inside IIS - https://www.iis.net/downloads/microsoft/url-rewrite
  3. Add the following lines to the GMSC's web.config which can be found at [GMSC_INSTALL]/Program/web.config
    <system.webServer>
    ..
    ...
    <urlCompression doStaticCompression="true" doDynamicCompression="false" />
    <rewrite>
    <outboundRules rewriteBeforeCache="false">
    <rule name="wsdlRewrite" preCondition="wsdlCondition" stopProcessing="true">
    <match filterByTags="None" pattern="http://YOUR_EXTERNAL_SERVER_URL.com" />
    <action type="Rewrite" value="https://YOUR_EXTERNAL_SERVER_URL.com" />
    </rule>
    <preConditions>
    <preCondition name="wsdlCondition">
    <add input="{HTTP_X_FORWARDED_PROTO}" pattern="^https$" />
    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/xml" />
    </preCondition>
    </preConditions>
    </outboundRules>
    </rewrite>
    </system.webServer>
Overview