Thursday, May 14, 2009

Tout le monde a suivi la sortie d’Azure à la PDC en octobre dernier, mais je voudrais faire un peu de relecture des annonces en détaillant les principales briques pour une prise en main rapide des concepts et de l’implémentation. Pour les endormis, voici la slide technico-marketing reprenant les principales composantes d’Azure :

Les blocs d'Azure

Ce premier article va gratter un peu autour du bus de services, pour comprendre son mode de fonctionnement et ses liens avec vos applications.

Une définition lapidaire du bus de services (ou ISB, pour Internet Service Bus)

L’ISB est une couche sécurisée de connectivité intermédiée, permettant d’exposer des canaux http et tcp sur Internet sans passer par une DMZ. Concrètement, n’importe quelle application (située sur un poste itinérant, sur un téléphone, ou dans une autre entreprise) peut bénéficier d’une connectivité directe avec n’importe quelle autre application (située sur un poste itinérant, un serveur, etc…).

Cette connectivité directe peut prendre plusieurs formes : canal TCP uni ou bidirectionnel, requête HTTP (web, web service, REST, etc.), streaming, et multicast.

Quel est le principe de fonctionnement de l’ISB ?

Comme souvent, les nouvelles techniques viennent des pratiques grand public. En l’occurrence, l’ISB trouve ses racines dans Msn Messenger et BitTorrent. Comme vous le savez probablement, un client BitTorrent a un rôle double : il est client pour récupérer les DVD (pleins de photos de vacances) que d’autres mettent à votre disposition, mais il est aussi serveur pour que ces précieuses photos soient récupérables chez vous en même temps que depuis les sources originales.

Oui mais voilà, autant être client tcp est simple, autant être serveur depuis sa connexion ADSL est délicat : les fournisseurs d’accès ne vous allouent plus d’adresse IP publique depuis belle lurette, ils utilisent une technique appelée NAT pour mutualiser les quelques adresses IPv4 mises à leur disposition, et votre machine pleine d’images est de ce fait incontactable depuis le monde extérieur, puisqu’elle n’a pas d’adresse publique ! Principe de la mise en relation via un relais

Ce problème existe aussi en entreprise, où les machines de l’intérieur du réseau possèdent des adresses non routables : consulter votre site de recherche favori depuis l’intérieur de l’entreprise est (souvent) simple, mais consulter votre machine de bureau depuis chez vous est (presque) impossible. Là où l’entreprise règle le problème en installant quelques machines ayant des adtresses publiques (sur une DMZ), comment fait le particulier ?

Des services comme Messenger, LogMeIn ou Mesh ont développé une approche simple et efficace : ils proposent une batterie de serveurs publiquement accessibles, qui permettent de contourner le problème du serveur. La connexion entre client et serveur devient intermédiée : le serveur lorsqu’il se lance ouvre un canal bidirectionnel avec un serveur public. Le client ne contacte plus directement le serveur, mais appelle le serveur public. Le serveur public joue le rôle d’intermédiaire entre le client et le serveur, et règle au passage les problèmes de connectivité du serveur.

Les services sus-mentionnés font en réalité des choses plus complexes, mais peuvent se permettre un certain nombre de raccourcis puisque les cas d’utilisation et les natures de connexion sont déterminées de bout en bout. Lorsqu’on essaie de transposer cette approche dans le monde du développement, les problèmes à régler sont de trois ordres :

  1. Comment s’assurer que les services exposés par l’entreprise A ne seront pas appelés par erreur ou malveillance par des clients n’ayant rien à faire là ? Avant même de mettre en place une couche de sécurité, il faut proposer un annuaire de points de connexions et se prémunir contre les ambiguités de nommage ou d’adressage.
  2. Comment tenir la charge si la même infrastructure publique doit encaisser les demandes d’un nombre énorme de clients et serveurs ?
  3. Comment donner au développeur une façon simple de faire appel à cette infrastructure intermédiée ?

Structure détaillée de l’ISB

Les deux premiers points vont nous permettre une petite visite dans les entrailles de l’ISB, le troisième étant plutôt consacré à ce qui se passe aux extrémités de la chaîne. Voici donc la version Azure du schéma ci-dessus :

Thursday, May 14, 2009 2:25:17 PM (GMT Standard Time, UTC+00:00) |  | #
Thursday, March 05, 2009

 

Ca fait des années que tout le monde se gargarise de sécurité sur Internet et les sites sécurisés en SSL se comptent encore sur les doigts de la main. Pire, la plupart des sites persos ou même de petites entreprises présentent régulièrement des certificats auto-générés ou périmés, et quand par bonheur on tombe sur un certificat valide, il est généré par un revendeur de revendeur de revendeur d’autorité de certification – les “grandes” autorités de certification préférant passer par des revendeurs pour les offres à bas prix et user de l’effet de marque pour imposer des tarifs  sans rapport avec leurs prestations lors de l’achat d’un certificat.

 

Tout ça pour vous dire que Gandi est devenu tout récemment autorité de certification, et offre un certificat SSL d’une durée de 1 an pour tout achat, transfert, ou renouvellement de nom de domaine. En d’autres termes : chaque nom de domaine que vous administrez peut avoir son certificat, remis à jour à chaque renouvellement du nom de domaine, sans surcoût. Je ne sais pas si cette offre s’établira dans la durée, mais je voulais la saluer comme une des meilleures choses qui puissent arriver dans le petit monde de la PKI.

 

Je renouvellerai un de mes sites en avance dans les jours qui viennent pour vérifier que tout fonctionne comme annoncé.

 

Oh, pour ceux d’entre vous qui ont été congelés à la fin des années 90 et qui n’ont pas entendu parler de Gandi : www.gandi.net

Thursday, March 05, 2009 10:45:26 PM (GMT Standard Time, UTC+00:00) |  | #
Friday, February 20, 2009

 

Le premier lien est spécifique aux appareil Canon.

 

1/ Accès au format RAW, et écriture de programmes de pilotage d’appareil photo

CHDK (http://chdk.wikia.com) est un ensemble d’add-ons au firmware standard permettant de faire plein de trucs rigolos avec un appareil photo Canon grand public.

 

2/ Eliminer le bruit

Neat Image (http://www.neatimage.com) fait un travail impressionnant de récupération de grain sur des photos prises sans flash.

 

3/ Balance des blancs sur les formats RAW

UFRaw (http://ufraw.sourceforge.net)  est pas mal du tout pour reconstituer une balance de blancs simplement. Il peut s’intégrer dans GIMP.

 

4/ Jouer avec des images en HDR

QtPfsGUI (http://qtpfsgui.sourceforge.net) permet de créer des images en HDR à partir d’un ensemble de photos (CHDK permet de faire du bracketing) puis de faire du tone mapping à travers une foultitude d’algos incompréhensibles et beaucoup trop paramétrables.

Friday, February 20, 2009 4:28:20 PM (GMT Standard Time, UTC+00:00) |  | #
Thursday, February 05, 2009

On vient de se faire une frayeur en préparant les exemples pour les TechDays, ADO.Net Data Services marchait plus sur ma machine.

 

Après une recherche sur mon moteur de recherche préféré, j’ai trouvé ça :

http://oakleafblog.blogspot.com/2008/12/breaking-adonet-issues-with-net-35-sp1.html

 

Qui pointe vers http://support.microsoft.com/kb/959209

 

Qui pointe vers http://www.microsoft.com/downloads/details.aspx?FamilyID=98E83614-C30A-4B75-9E05-0A9C3FBDD20D&displaylang=en&displaylang=en

(pour les amateurs de Hyper-V)

Thursday, February 05, 2009 10:42:34 PM (GMT Standard Time, UTC+00:00) |  | #
Tuesday, January 27, 2009

 

Petit post-it pour la RC : Windows 7 ne s’installe pas sur un M400 parce qu’il ne trouve pas de disque. J’ai eu la même chose en installant Vista et j’avais oublié, alors cette fois-ci je le note : il faut récupérer le driver RAID sur le site Toshiba (peut-être  http://support1.toshiba-tro.de/tedd-files2/0/raid-drv-20070904114544.zip, en tous cas ça marche aujourd’hui), le dézipper sur une clé USB et charger le driver idoine au moment où Seven le propose.

Tuesday, January 27, 2009 11:46:51 AM (GMT Standard Time, UTC+00:00) |  | #
Saturday, November 29, 2008

En préparant un événement la semaine dernière j’ai du installer Live Mesh sur un Windows 2008 64bits. L’install a échoué avec un message d’erreur bizarre. J’ai immédiatement relancé en élévation de privilège et j’ai eu un autre message plus explicite (impossible de s’exécuter dans ce mode).

 

Bref, deux jours après j’ai ré-essayé et ce coup-là j’ai lu attentivement la boite de dialogue du premier échec, qui dit en substance :

 

Dans

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]

Créez un REG-DWORD nommé DisableMSI de valeur 0. Intallez Mesh, puis supprimez la clé.

Saturday, November 29, 2008 2:25:26 PM (GMT Standard Time, UTC+00:00) |  | #
Monday, October 27, 2008

Kim Cameron nous présente une session d’introduction à la gestion d’identité, commençant par un rappel : chaque communication entre deux entités commence par

Qui es-tu ?

La discussion file vers la façon la plus naturelle de régler le problème : une base login/password. Il continue en passant sur Active Directory, puis OTP pour des accès externes, puis des audits de sécurité, puis … Bref.

 

Ensuite, il prend une comparaison avec la gestion des entrées/sorties en montrant qu’un flux d’octets est le bon niveau d’abstraction, et complète son analogie en introduisant la notion de Claims pour porter une information d’identité.

 

Il développe  les grandes notions de façon un peu désordonnée : le besoin d’adoption du système par les utilisateurs, le besoin de définir des standards, le besoin de transformer d’un mode de représentation à un autre.. Bref, il nous faut un méta-système pour englober les spécificités de chaque système et permettre l’unification des formats, transports et responsabilités.

 

D’où :  Geneva, un framework simplifiant l’implémentation de tout ça

 

Qui es-tu ?

insertion dans le App.Config d’une directive

<federatedAuthentication enabled=”true”>

  wsFederation issuer =”” realm=”” passiveRedirectenabled=”true”

<federatedAuthentication >

Que peux-tu faire ?

IclaimsIdentity caller = Thread.CurrentPtincpal.Identity as IClaimsIdentity

string role = (from c in caller.claims where c.ClaimType = myClaimstype.Roles

select c.Vaue).Single

Geneva en détail :

 

Le FW

pour créer des applis orientées claims

Le Serveur Geneva

Un STS intégré à AD

Supporte Cardspace

 

Windows Cardspace Geneva

Client de fédération (un nouveau client Cardspace)

 

Ensuite, on va regarder ce qui se passe côté client : l’autre entreprise, l’autre utilisateur.

Les arguments sont : le FW supporte WS-Federation, WS-Trust, SAML 2.0, et peut donc fonctionner avec toute offre logicielle reposant sur l’un de ces standards.

 

DogFooding ?

Nous (MS) utilisons la même architecture en interne, et chaque application chez nous devient accessible via la Microsoft Federation Gateway, conforme à Ws-Fed et WS-trust

 

Live-ID ?

Conforme au sens où nous savons l’intégrer dans le système de fédération.

Nous lançons Mic’osoft Services Connector qui connecte AD à Mictrosoft Federation Gateway, download gratuit, pour les clients qui ont besoin d’un accès à la Gateway et pas plus, c’est bien sûr compatible avec Cardspace.

 

Faut-il impérativement reposer sur une ressource type Cloud, la Federation Gateway, pour tourner ? On peut tout à fait travailler en deux couches : un Geneva Server en local, qui sera capable daccepter des communications en provenance de la Gateway si nécessaire.

 

Encore du neuf : .Net access control service : c’est un service (un STS) qui prend des claims d’authentification et renvoie des claims d’autoirisation (en gros, on lui donne des règles et des rôles, et à partir de l’identité il renvoie les rôles auxquels appartient l’utilisateur). Ce service n’a rien de compliqué à écrire, c’est un peu l’AzMan du monde de lidentité fédérée

 

Après ces 30 minutes assez intenses (un vrai déluge d’annonces), Kim passe la parole à Vittorio Bertocci pour une série de démos. Je ne vais sans doute pas les reprendre dans ce compte-rendu, mais voilà quand même mes notes

 

--

 

La méga-démo reprend tous les éléments. Les forces en présence : une entreprise classique (ADatum), un éditeur qui fait du SaaS, et le Microsoft Services Identity Backbone avec tous les blocs derrière

 

La démo commence avec un empoloyé d’Adtum (l’entreprise) qui se loggue sur sa bécane et file sur une application CRM Online. La partie surprenante : on a eu un SSO entre adatum (le client initial) et l’application hostée par Microsoft

Traduction : l’appli hostée chez MS a eu besoin d’un token, ce token a été délivré par la Microsoft Federation Gateway qui est en fédération avec lo’AD de ADatum.

 

Il continue en disant “très bien, on sait le faire chez MS, et si vous voulez être l’hébergeur ?” En d’autres termes, pouvons-nous dynamiquement assirer la fédération ? Il montre que ça fonctionne, et présente dans les pages de l’application SaaS des données qui viennent de l’yutilisateur et expliquèe que ces données ont été trannsmises dynamiquement

 

Il lance un Geneva Server (enfin, la MMC associée) et montrre qu’on peut administrer des relying parties : à qui puis-je délivrer des tokens. La MMC permet de définir des claims s’appuyant sur l’Active Directory.

 

On file ensuite sur Fabrikam pour voir comment ils consomment les claims émises par le serveur Geneva

Il part d’une appli ASP.Net classique (au passage : Zermatt est dans Geneva maintenant).

Il montre qu’il accepte les caims de adatumcorporation, et qu’on fait ensuite des requêtes LINQ sur les claims

firstname = from c in claims …

 

Fin du scénario : à la fin de la journée, l’employé rentre chez lui. Il ouvre son portable, retourne sur son applicatyion, mais ce coup-ci il n’y a pas de sso actif puisque son AD n’est pas là. Donc on lui propose de s’identifier (Geneva et le connector ont des pages type pour ça, qui proposent CardSpace et un autre que j’ai pas vu)

 

Il montre le nouveau Cardspace : interfae très lég_re, qui lui demande de fournir es credentials de domaine, et hop ça passe

 

le cheminement : de chez moi je file vers l’AD de mon entreprise, qui me délivre un jeton consommable par l’appli SaaS

 

Il termine en montrant une modification : refusée, il n’est pas manager. Mais ici on montre qu’on peut rendre magique ce déblocage d’accès : il utilise .Net Access Control Service

 

Il montre une appli qui utilise les APIS de gestion d’Azure et montre de façon graphique les règles qui présiednt à la transformation des claims donnant les claims d’autorisation

 

La fin : comment raccordement à LiveId, puis interop avec Tivoli d’IBM, avec le protocole SAML 2

 

11h56 : passe la parole à Kim

 

Oh : LiveId est maintenant BootStrappé sur OpenId (j’ai pas plus d’infos pour le moment, pas de lien )

Donc pour vos sites et applis : soit Live Framework (LiveId-based?), soit Framework Geneva, soit OpenId

 

Geneva Server :

Genevca RTM H2 CY09

13h45 : Geneva server Overview

3h30 : cpo,ecting AD to %ocrosoft Services

Monday, October 27, 2008 7:10:07 PM (GMT Standard Time, UTC+00:00) |  | #
Thursday, October 09, 2008

J’ai réinstallé récemment ma machine sous Windows Server 2008, pour profiter un peu d’Hyper-V notamment, et j’ai découvert à  mon grand dam qu’hyper-V est incompatible avec la mise en veille.  Moi qui redémarre ma machine une à deux fois par trimestre, c’est un peu dur.

 

Bref, après des recherches un peu longues, j’ai trouvé un contournement simple : ne pas lancer hyper-V tant que je n’en ai pas besoin. Ca se fait à coup de base de registre :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hvboot]

Là-dedans, passez Start à 3 au lieu de 1, et vous récupérez la mise en veille de votre belle machine.

Lorsque vous avez besoin d’Hyper-V, un petit command prompt et  net start hvboot réactive Hyper-V. Ensuite il faudra arrêter le portable au lieu de le mettre en veille, mais du coup je peux descendre à 4 reboots par semaine, beaucoup plus agréable que 20..

 

Pour les maniaques du clavier, j’ai aussi remappé les touches qui entourent les flèches de direction. Par défaut elles font Précédent/Suivant dans IE, je préfère PageUp et PageDown. Pour ça, copiez ceci dans un fichier .reg :

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,69,00,51,00,6A,00,49,00,\
  00,00,00,00

 

 

Puis double-cliquez dessus et rebootez.

Pour les curieux, voilà ce que ça dit : les données hexa se lisent par paquets de 4. Les deux  premiers sont décoratifs (lire : réservés pour usage ultérieur), le 3e indique le nombre de touches à remapper, les trois  suivants sont les scancodes de la touche à remplacer et de la touche qui la remplace, le dernier remplace rien par rien, c’est comme ça qu’on indique qu’on a terminé le remappage.

Thursday, October 09, 2008 1:37:55 PM (GMT Standard Time, UTC+00:00) |  | #
Search
Archive
Links
Categories
Admin Login
Sign In
Blogroll
Themes
Pick a theme: