Les Web Services 1.0 de l’API Bing Maps nécessitent une authentification pour pouvoir être exploités et pour nous permettre de récupérer des statistiques d’utilisation de ces services.

bingmaps_header

Ce billet a pour but de présenter ce service d’authentification dans le détail afin de comprendre les mécanismes d’authentification utilisés (jeton et clé) et inclure des bonnes pratiques au niveau de l’utilisation des Web Services.

 

Présentation du service d’authentification

Les Web Services 1.0 de Bing Maps ne sont pas rendus disponibles en libre accès et nécessitent une authentification sous 2 modes : avec transmission d’un jeton (token) ou via l’utilisation d’une clé d’application (application key).

Pour s’authentifier avec l’API Bing Maps de manière simple, il est nécessaire de s’inscrire sur le site dédié disponible à l’adresse suivante et qui vous permettra également de suivre l’utilisation des services par vos applications :
https://www.bingmapsportal.com/

Après que s’être connecté avec un compte associé à un LiveID (ancien compte Passport :) ), on obtient un identifiant ainsi qu’une clé associée que vous pourrez utilisé dans vos applications.

Voici les étapes d’inscription et/ou de gestion en images :

Bing Maps portal inscription key   Bing Maps inscription account info  Bing maps inscription application key 

A cette étape, il est nécessaire de conserver l’identifiant et le mot de passe à utiliser pour vos prochains développements, conserver également la clé générée.

image Attention :
La méthode d’authentification par jeton utilise l’ancienne plateforme disponible à l’adresse suivante : https://mappoint-css.live.com/cscv3/ 

 

Gestion de l’authentification par application key

Comme indiqué sur le portail dédié, le développeur peut générer des clés d’application (5 maxi par compte développeur) afin de s’authentifier sur la plateforme.

Cette clé devra être transmise au moment de la requête, nous verrons dans le détails les éléments composant une requête, mais le point important et commun à toutes les requêtes concerne justement la transmission de cette application key.

Sur une requête quelconque à un service, on doit définir les options de requête notamment le point concernant les informations d’authentification :

  // Set credentials
request.Credentials = new Credentials();
request.Credentials.ApplicationId = c_AppKey;

Ici, on remarque tout d’abord la création de l’objet de type Credentials et on renseigne la propriété ApplicationId où l’on place très justement la clé générée.image

A noter : il peut être utile de définir cette clé à un seul et même endroit dans votre application.

 

Gestion de l’authentification par jeton

Pour utiliser cette méthode d’authentification, dans l’application, il faut tout d’abord ajouter la référence au Web Service d’authentification afin d’interroger ces derniers.

Pour cela 2 adresses en fonction de votre type de compte :

Pour ajouter la référence et accèder au Web Service, il vous faudra au préalable activer votre compte sur l’ancienne plateforme à travers ce site : https://mappoint-css.live.com/cscv3/ 
Obtenir un compte développement peut prendre 24h.

Une fois la référence ajoutée, il est nécessaire de gérer l’authentification permettant de récupérer le jeton qui sera transmis à chaque appel aux Web Services (que ce soit le service de geocoding, itinerary, imagery ou search).

Bing Maps Web Services Authentification authentication system Méthode d’authentification par jeton

Puisque nous réalisons sans cesse la même opération de récupération de jeton, il est recommandé de créer une classe dédiée que j’appelle ici, AuthenticationHelper et que je place dans une projet différent.

Cette classe est statique et présente la méthode GetToken() qui s’occupera d’effectuer l’appel au Web Service d’authentification et de transmettre le jeton généré et qui sera utilisé par la suite.

Voici le code associé :

  public static string GetToken()
{
    // Set Bing Maps Platform Developer Account 
// credentials to access the Token Service
CommonService commonService = new CommonService(); commonService.Credentials =
new System.Net.NetworkCredential(
ConfigurationSettings.AppSettings["BingServiceId"], ConfigurationSettings.AppSettings["BingServicePassword"]); // Set the token specification properties TokenSpecification tokenSpec = new TokenSpecification(); tokenSpec.ClientIPAddress =
ConfigurationSettings.AppSettings["BingServiceClientIP"]; tokenSpec.TokenValidityDurationMinutes = 60; string token = ""; // Get a token try { token = commonService.GetClientToken(tokenSpec); } catch (Exception ex) { } return token; }

Une fois cette classe réalisée, il devient alors possible d’utiliser ce jeton dans le reste de l’application lors d’appel au Web Services de Bing Maps for Enterprise. Pour cela, on spécifie la propriété Token de l’objet de type Credentials incluant les informations d’authentification.

Pour plus d’infos, voir : http://msdn.microsoft.com/en-us/library/cc981028.aspx

 

Considérations et conclusions

La raison pour laquelle je recommande d’utiliser la méthode de l’application key peut se résumer très simplement, pour générer le jeton avec l’ancienne plateforme, il est nécessaire de spécifier non seulement un identifiant unique, mais également un mot de passe unique (et associé) et surtout l’adresse IP de la source de la requête. Enfin, il faut gérer l’expiration de ce jeton.

La méthode utilisant la clé d’application est donc bien plus simple et est donc celle que je recommande .

Cet article présente le système d’authentification utilisé au sein de la plateforme Bing Maps for Enterprise et qu’il est nécessaire de gérer pour l’ensemble des appels aux Web Services.

On retrouve également une classe qu’il vaut mieux garder sous la main afin de s’éviter la ré-écriture systématique et inutile de cette génération de jeton si l’on souhaite utiliser cette méthode qui devrait tendre à disparaître au profit de la clé d’application.

 

Le prochain article abordera le service de geocoding et reverse-geocoding et exploitera très justement la méthode utilisant l’application key.