Tutoriel : Contrôle de l’accès au service de données OGDI avec Windows Azure AppFabric – 1ère partie

Au cours de ce tutoriel, nous intéressons à la mise en place d’un mécanisme d’authentification et d’autorisation pour accéder à une instance du service de données OGDI (Open Government Data Initiative) et ce, de façon par exemple, à :

  • Ne rendre le service en ligne dans sa phase de pré-production/mise en production accessible qu’à un certain public, l’équipe projet ou encore une cible d’usagers « pilote » ;
  • Ouvrir, dans un premier temps, la plateforme aux seuls développeurs d’applications, dans le cadre de la mise en œuvre de concours comme expérimentée à Rennes, ou celle d’ateliers créatifs (« barcamps, forums créatifs, « coding parties ») pour sortir des usages classiques et faire émerger des projets très innovants ;
  • Accompagner une ouverture et mise à disposition progressive des jeux de données ;
  • Permettre, le cas échéant, une utilisation avec redevance afin de compenser les investissements consentis par les acteurs publics dans la mise à disposition (et la maintenance) de leurs données publiques. Nous vous invitons à ce titre à consulter le guide juridique et pratique sur les données publiques publié par l’agence aquitaine des initiatives numériques. Ce dernier, sorte de vadémécum des données publiques à destination des acteurs publics et privées revient dans le cadre du mouvement Open Data sur les enjeux juridiques et pratiques qui y sont liés ;
  • Etc.

Pour cela, nous allons simplement nous appuyer sur la plateforme Windows Azure AppFabric.

Windows Azure AppFabric

image

Windows Azure AppFabric fait partie avec Windows Azure et SQL Azure de la gamme de services PaaS de Microsoft dans le Cloud. Certes, mais encore ?

Il s’agit d’une plateforme complète de middleware dans le Cloud qui permet de répondre au besoin de flexibilité pour exécuter des applications et des services sur diverses plateformes : sur site (on-premise), dans le Cloud ou dans une combinaison hybrides des deux. Il s’agit de connecter et associer des applications, de le faire via des services Web consommables, d’autoriser l'accès à ces services par des identités numériques existantes (en entreprise ou sur le Web), d’assurer l'interopérabilité entre les plateformes, les protocoles et les standards.

Windows Azure AppFabric rend le développement plus efficace en fournissant une abstraction de haut niveau qui permet le développement d'applications métier au travers de trois services principaux :

  1. Le service de contrôle d’accès (Access Control Service ou simplement ACS) qui nous intéresse ici compte tenu de notre objectif dans ce tutoriel ;
  2. Le service de bus des services (Service Bus) ;
  3. Et le service de cache (Caching).

Ces services utilisent des protocoles standards et interopérables entre les langages (.NET, Java, Ruby, PHP, etc.). Windows Azure AppFabric est fourni avec un kit de développement offrant des bibliothèques permettant de directement accéder aux services fournis, pour encore plus de productivité ! Mais au fait, qu’apportent ces services dans la pratique ?

Le service de contrôle d’accès met à disposition des applications et des services Web une authentification (éventuellement fédérée) des utilisateurs et un contrôle d’accès, tout en délocalisant/externalisant ces mécanismes d’authentification et d’autorisation en dehors de votre code métier. Au lieu d’implémenter un système d’authentification avec des comptes utilisateurs spécifiques à une application ou votre service, vous pouvez laisser ACS s’occuper de l’authentification et des autorisations de vos utilisateurs. Il s’intègre, pour cela, nativement différents fournisseurs d’identité qu’il s’agisse, d’annuaires d’entreprise comme Active Directory via Active Directory Federation Services (AD FS) 2.0 et de fournisseurs d’identités Web tels que Windows Live ID, Google, Yahoo et Facebook.

ACS permet de représenter une politique de contrôle d’accès en dehors de l’application ou d’un service sous forme d’un ensemble de règles d’autorisation déclaratives. Ces dernières permettent de transformer, le cas échéant, des jetons de sécurité externes émis par des acteurs et partenaires de confiance en jetons de sécurité reconnus, consommables et compris par vos applications et services. Ces règles sont définies en utilisant un modèle XML très simple, ce qui par corollaire permet de bénéficier d’un code plus propre. ACS constitue ce que l’on appelle un service de jetons de sécurité ou STS (Security Token Service).

ACS est compatible avec la plupart des langages et des environnements d’exécution, supporte de nombreux protocoles comme WS-Trust, WS-Federation, OpenID ou encore OAuth (Open Authorization) et prend en charge les formats de jeton SAML (Security Assertion Markup Language) et WST (Simple Web Token). Nous vous invitons à consulter le livre blanc Métasystème et mash-up d'identités avec les produits et technologies Microsoft pour une vue d’ensemble sur ces protocoles et formats de jetons.

Le service de bus des servicesfournit un bus de messages permettant de faire circuler des messages technique ou métier et d’établir une connectivité entre les différents composants d’applications distribuées et/ou fonctionnant en mode déconnecté aussi bien dans le Cloud que dans les scénarios hybrides. Les protocoles invoqués pour le transport des messages sont TCP et HTTP sur lesquels peuvent venir se superposer différents modèles (patterns) de communication permettant de s’abstraire des problématiques de fiabilité, de livraison et d’évolutivité qui sont pris en charge par le service. On parle d’ISB (Internet Service Bus) par analogie avec l’ESB (Enterprise Service Bus) bien connu des architectes applicatifs.

Enfin, pour conclure se rapide tour d’horizon, le service de cache comme son nom l’indique fournit un service et des mécanismes de cache pour les applications Windows Azure et SQL Azure. Il permet d’améliorer les performances des applications Web s’exécutant sur la plateforme Windows Azure avec des changements mineurs de configuration, sans aucune modification au niveau de code applicatif, et de réduire également la latence lors de l’accès aux données qui sont stockées dans les bases de données SQL Azure ou bien le stockage Windows Azure.

Si vous voulez approfondir le sujet et en apprendre plus sur Windows Azure AppFabric, vous pouvez vous rendre sur le blog officiel dédié. Vous pouvez aussi vous tourner vers le kit de formation Windows Azure et bien évidemment la documentation MSDN. Un show télévisé sur Channel9 propose également régulièrement différents podcasts couvrant les services de Windows Azure AppFabric.

Pour tester gratuitement Windows Azure AppFabric, il vous suffit de cliquer ici.

Service de données OGDI (rappel)

Pour rappel, le service de données OGDI est une application Web ASP.NET qui offre un service RESTful OData à l’URL https://[url de base de la solution OGDI]/v1, par exemple https://ogdifrancedataservice.cloudapp.net/v1 pour l’instance de test du kit de démarrage OGDI mise à disposition par Microsoft France.

Ce service de donnée s’exécutant par défaut dans la plateforme Cloud PaaS Windows Azure, il semble naturel de proposer un scénario très simple d’authentification et de contrôle d’accès reposant sur le service de contrôle d’accès de la plateforme Windows Azure AppFabric.

imageimage

Dans cette optique, pour accéder au service de données RESTful OGDI, le client doit demander via le protocole d’autorisation OAuth (Open Authorization) 2.0 au service de contrôle d’accès ACS d’émettre un jeton de sécurité de type SWT. L’article Introducing OAuth 2.0 propose une vue d’ensemble du protocole OAuth 2.0 en cours de standardisation au sein de l’IETF. Le format SWT qui peut être utilisé au sein d’OAuth2 est définit dans le profil WRAP (Web Resource Authorization Protocol) qui sert de fondation à OAuth 2.0.

L’obtention d’un tel jeton suppose une authentification réussie auprès d’ACS, et ce via un login et un mot de passe gérés par ACS, ou autrement dit une identité du service ACS. ACS assure dans ce scénario le rôle de fournisseur d’identité.

La première étape consiste donc à créer puis à configurer le service de contrôle d’accès ACS. C’est l’objet de la seconde partie de ce tutoriel.