Comme indiqué depuis septembre 2011 sur les différentes sources que ce soit le blog et site officiel, les messages envoyés aux utilisateurs ou les différents autres moyens de communication, le service de jeton autrefois utilisé par MapPoint et réutilisé dans ce même esprit par Bing Maps for Enterprise est remplacé par le service d’authentification par clé.

Ce service de jeton sera définitivement coupé le 30 mars 2012.

Bing Maps migration du service de jeton vers les clés Bing - AJAX v6.3, v7 , SOAP, REST et Silverlight

 

Bing Maps jeton remplacé par les clésQuels sont les composants impactés ?

Le système d’authentification étant une partie importante de la plateforme, on le retrouve dans de nombreux composants.

Parmi les composants impactés, on retrouve :

  • Le contrôle Bing Maps AJAX v6.3 (et précédentes qui pointent de toute manière sur cette version désormais)
  • Le contrôle Silverlight
  • Bing Maps Web Services SOAP

Si vous utilisez ces composants, veillez à vérifier le type d’authentification et autorisation utilisé au sein du développement et à migrer le cas échéant.

 

Quels gains ?

Le changement de système apporte son lot de nouveautés et d’avantages tels que :

  • Performances améliorées : évite l’étape nécessaire à la récupération du jeton avant l’appel à la plateforme
  • Pas de gestion d’expiration des jetons, les clés n’expirent pas
  • Gestion améliorée et visualisation plus précise de l’utilisation de la plateforme Bing Maps for Enterprise à travers le portail dédiéBing Maps performances optimisées

Ainsi, la modification obligatoire apporte un réel plus pour l’utilisateur de la plateforme et l’applicatif bénéficie de cette migration en observant des performances améliorées.

 

Comment migrer facilement ?

Afin de migrer de l’ancien service d’authentification vers le nouveau, il est nécessaire procéder par étape et de gérer vos clés d’application à travers le portail d’administration Bing Maps for Enterprise disponible ici : http://www.bingmapsportal.com/

Microsoft a bien entendu documenté ces éléments avec précision et vous retrouverez plusieurs exemples de code et ressources documentaires utiles pour réaliser cette migration sans souci. image

Ces éléments sont disponibles à travers le lien suivant : http://msdn.microsoft.com/en-us/library/gg197514.aspx

Je vous recommande naturellement de procéder avec prudence en conservant notamment une copie de vos développements avant modification de manière à prévenir tout risque de perte de code utile.

 

Qu’est-ce qui change et comment migrer ?

En concret, nous allons ici aborder les éléments qui changent pour chaque composants de la plateforme impactés par cette migration.

  • Contrôle AJAX v6.3

Le contrôle AJAX v6.3 utilisé dans un contexte entreprise nécessitait de spécifier les informations d’authentification.

var token = "<%=clienttoken %>";
var map = new VEMap('mymap');
map.SetClientToken(token);
map.LoadMap();

Désormais le code à utiliser et légèrement modifié est le suivant :

var key = "BINGMAPSKEY";
var map = new VEMap('mymap');
map.SetCredentials(key);
map.LoadMap();

imageLa méthode SetCredentials de la classe VEMap est maintenant celle qui faut utiliser pour spécifier les informations d’authentification, la document est disponible ici : http://msdn.microsoft.com/en-us/library/ee692182.aspx

 

  • Contrôle Silverlight

Le contrôle Silverlight nécessite de spécifier la clé en utilisant la classe dédiée ApplicationIdCredentialsProvider au lieu d’utiliser la classe ClientTokenCredentialsProvider autrefois utilisée.

Ainsi le code utilisé, permettant de spécifier la clé peut être le suivant en code XAML déclaratif :

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"
    Width="1024" Height="768">
    <Grid x:Name="LayoutRoot" Background="White">
        <m:Map x:Name="myMap" CredentialsProvider="BINGMAPSKEY" Mode="Road"/>
    </Grid>
</UserControl>

Pour information, l’ensemble des exemples documentés respectaient ce processus et ces bonnes pratiques.

 

  • Utilisation des Web Services SOAP

L’utilisation des services SOAP nécessite la définition de la propriété ApplicationId de la classe Credentials dont l’objet instancié est passé comme valeur de la propriété Credentials de l’objet la classe GeocodeRequest ou de tout autre requête d’imagerie, de calcul d’itinéraire ou autre héritant toutes de la classe de base RequestBase.

Voici maintenant le code à utiliser :

string key = "BINGMAPSKEY";

GeocodeRequest geocodeRequest = new GeocodeRequest();

// Set the credentials using a valid Bing Maps Key
geocodeRequest.Credentials = new Credentials();
geocodeRequest.Credentials.ApplicationId = key;

// Set the full address query
geocodeRequest.Query = "165 avenue de bretagne, Lille, France";

// Make the geocode request
GeocodeServiceClient geocodeService = new GeocodeServiceClient();
GeocodeResponse geocodeResponse = geocodeService.Geocode(geocodeRequest);

On remarquera qu’il est tout à fait possible d’extraire cette clé dans un fichier de configuration ou tout autre solution permettant de modifier la clé sans reconstruire l’ensemble de l’application.

 

Conclusions

Cette migration longuement anticipée et très documentée va nécessairement imposer une migration de certaines parties de vos applications qui utilisaient le système de jeton.

A travers cet article, nous avons pu voir que la migration est relativement aisée et apporte des éléments intéressants pour vos applications.

Si toutefois vous rencontrez un souci particulier pour effectuer cette migration, n’hésitez pas à me contacter directement ou à contacter votre responsable au sein de Microsoft qui pourra vous rediriger vers moi ou une autre personne du support technique.