.NET C#

Afin d'accèder à l'API il est nécessaire de configurer l'accès au point de terminaison et le mode sécurité au niveau du projet .Net.
Le mode de sécurité utilisé est défini par le protocole de communication WS-Security (Web Services Security) qui permet d'appliquer de la sécurité aux services web.
L'en-tête WS-Security permet l'utilisation d'un Username token afin de soumettre un nom d'utilisateur et un mot de passe.

    <s11:envelope xmlns:s11="..." xmlns:wsse="...">
        <s11:header>
            ...
            <wsse:security>
                <wsse:usernametoken wsu:id="…">
                    <wsse:username> … </wsse:username>
                    <wsse:password type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"> … </wsse:password>
                </wsse:usernametoken>
            </wsse:security>
            ...
        </s11:header>
        ...
    </s11:envelope>

Configuration du point de terminaison

Le service expose un point de terminaison unique pour communiquer avec le service, lequel est défini à l'aide du fichier de configuration Web.config.
Le point de terminaison se compose d'une adresse, d'une liaison et d'un contrat.
La liaison est configurée à l'aide d'un <wsHttpBinding> standard, qui utilise par défaut le mode de sécurité du message.

    <?xml version="1.0" encoding="utf-8" ?>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="SecureSOAPEndPoint">
                    <security mode="TransportWithMessageCredential">
                        <transport clientCredentialType="None" />
                        <message clientCredentialType="UserName" establishSecurityContext="false" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://scows.nicecotedazur.org/services/1.1/SOAP/UrbanMonitoringSOAPService.svc"
                binding="wsHttpBinding" bindingConfiguration="SecureSOAPEndPoint"
                contract="Scows_svc_1_1.IUrbanMonitoringSOAPService" name="SecureSOAPEndPoint" />
        </client>
    </system.serviceModel>
    

Appel de la méthode GetDevice

GetDevice nécessite l'ID de l'équipement (deviceID) et les credentials (login et password).

    try
    {
        // deviceID et credentials
        string deviceID = "ENVIRO-PRESTA-1486286458";
        Scows_svc_1_1.Credentials credentials = new Scows_svc_1_1.Credentials();
        credentials.login = "login";
        credentials.password = "password";

        // WS-Security
        Scows_svc_1_1.UrbanMonitoringSOAPServiceClient service = new Scows_svc_1_1.UrbanMonitoringSOAPServiceClient("SecureSOAPEndPoint");
        service.ClientCredentials.UserName.UserName = "login";
        service.ClientCredentials.UserName.Password = "password";
        service.Endpoint.Address = new EndpointAddress("https://scows.nicecotedazur.org/services/1.1/SOAP/UrbanMonitoringSOAPService.svc");

        Scows_svc_1_1.NCADevicePublication device = service.getDevice(deviceID, credentials);
    }
    catch (Exception ex)
    {
        Console.WriteLine(String.Format("Error message : {0}", ex.Message));
    }