Windows Azure AppFabric Rochdi Chakroun Geoffrey Daniel Thomas Conté
Agenda Présentation & Introduction Rappel: la plateforme Windows Azure Présentation de la brique Azure AppFabric Présentation du projet de démo Service Bus Présentation Démo & code Access Control Service Conclusion
Présentation des intervenants Rochdi Chakroun, WinWise rochdi.chakroun@winwise.com http://www.dotnetguru2.org/rochdichakroun Geoffrey Daniel, WinWise Geoffrey.Daniel@winwise.com http://blogs.developpeur.org/neurocypher Thomas Conté, Microsoft tconte@microsoft.com twitter.com/tomconte blogs.msdn.com/tconte
Petits rappels: Windows Azure SQL Azure Azure AppFabric date
Plateforme Azure: vue d’ensemble Compute Storage Management Relational data Connectivity Access control
Service Bus Access Control Service Azure AppFabric Service Bus Access Control Service date
Le problème Connecter Contrôler & sécuriser Comment utiliser les services « dans les nuages » pour connecter applications et services, où qu’elle soient? Établir une passerelle entre nuage, à demeure, hébergé Faciliter et sécuriser la connexion réseau / sécurité Gérer identité et contrôle d’accès Interopérer avec différents langages, plateformes La solution: Connecter Contrôler & sécuriser Service Bus Access Control
Connecter les services entre eux, dans le nuage, à demeure, hébergés Service Bus Expose des services REST ou SOAP sur l’Internet à travers firewall et couches de NAT Communique de façon bi-directionnelle entre apps et services de façon interopérable Différents choix de types et modèles de message: Relai, Message Buffers… Montée en charge naturelle et automatique Access Control Service Authorization management and federation infrastructure Provides internet-scope federated identity integration for distributed applications Use it to Secure Service Bus communications Manage user-level access to apps across organizations and ID providers Service Bus 0101 0111 0011 0111 firewall firewall NAT 0101 0111 0011 0111 0101 0111 0011 0111 Votre application Application “partenaire”
Gérer l’identité et les contrôles d’accès Contrôler & sécuriser Service Bus Network abstraction and virtualization infrastructure Enables many common shapes of communication in an efficient and interoperable manner Use it to Connect applications across any network topology, including firewalls and NAT boundaries Exchange data between loosely coupled applications Access Control Service Intègre les autorisations aux apps pour contrôler “qui peut faire quoi” Fédère de multiples systèmes d’identités: organisations, fournisseurs d’ID Appliquer facilement des règles de contrôle d’accès fines Sécuriser les communications du SB Montée en charge naturelle et automatique Access Control Service Règles de contrôle d’accès Transformation des assertions Token Échange de certificats Assertions Vérification des assertions Message + Token Votre application Application “partenaire”
Service Bus date
outbound socket connect outbound socket rendezvous Le principe du relais http://myapp.servicebus.windows.net/a/b/ Backend Naming Routing Fabric Service Bus 2 Ctrl Frontend Nodes NLB Ctrl 3 Forwarder 1 outbound socket connect 4 outbound socket rendezvous Sender Receiver
Traversée NAT & Firewall Service Bus Connexions sortantes uniquement Pas de ports entrants à ouvrir Connexions sortantes en TCP par défaut Se rabat sur du HTTP si nécessaire Protégé par le Firewall du Data Center « DMZ externalisée » Sécurisé par le Access Control Service Flexibilité au niveau des contrôles d’accès Receiver
Service Registry http://project.servicebus.windows.net/ Root apps docs media info Découverte via Atom 1.0 et GET URLs activés/gérés automatiquement via listeners WCF crm hr script fldrs TV vault sfo nyc dus stgB stgA share pics video
Extension du modèle WCF Application Service WCF 3.5 WebHttpBinding Service Bus WebHttpRelayBinding HTTP.SYS Service Bus 80 Offre des bindings correspondant aux principaux bindings WCF Securité, Binaire, Streaming, Reliable Sessions Pas besoin de NAT ou d’ouvrir des ports sur l’extérieur
Application pratique! Un site de vente de ticket de concerts, hébergé dans Azure Ce qui lui permet de faire face aux pics de trafic La base de données client (CRM) ainsi que la base des commandes (ERP) sont critiques et restent hébergées « à demeure » Comment exposer ces bases à l’application Web, de façon simple, compte tenu des problématique de sécurité réseau? Mes commandes doivent être auditées par une société tierce Comment peut-elle les recevoir facilement? J’ai des partenaires externes qui gèrent la logistique (impression et expédition des billets) Comment peuvent-ils interagir avec mon système, de façon sécurisée, et sans leur imposer une technologie particulière?
Utilisation du NetTCPRelayBinding: Identification de l’utilisateur Démo Utilisation du NetTCPRelayBinding: Identification de l’utilisateur date
Schéma fonctionnel SQL Azure Web Role Site Web: Login / Mot de passe Catalogue Site Web: E-Commerce Login / Mot de passe Profile de l’utilisateur Réseau entreprise Membership Services CRM
Liste (non exhaustive) des bindings WCF Binding New Service Bus Binding BasicHttpBinding BasicHttpRelayBinding WebHttpBinding WebHttpRelayBinding WSHttpBinding WSHttpRelayBinding WS2007HttpBinding WS2007HttpRelayBinding WSHttpContextBinding WSHttpRelayContextBinding NetTcpBinding NetTcpRelayBinding n/a NetOnewayRelayBinding NetEventRelayBinding
WebHttpRelayBinding Slide à ajouter
Utilisation du WebHttpRelayBinding: Streaming vidéo Démo Utilisation du WebHttpRelayBinding: Streaming vidéo date
Schéma fonctionnel Catalogue Site Web: E-Commerce Regarder Extrait 0101010010101010101111 Réseau entreprise Membership Services Streaming Services CRM
NetEventRelayBinding Service Bus sb://project.windows.net/a/b/ Backend Naming Routing Fabric Route Subscribe Frontal Msg Msg Msg outbound connect one-way net.tcp outbound connect bidi socket outbound connect bidi socket Sender Receiver Receiver
Utilisation du NetEventRelayBinding: Passage de commande Démo Utilisation du NetEventRelayBinding: Passage de commande date
Schéma fonctionnel Nouvelle commande Partenaires Audit des commandes Catalogue Site Web: E-Commerce Order Services Application d’audit Réseau entreprise Membership Services Order Services CRM
sb://solution.servicebus.windows.net/a/b/ Message Buffers sb://solution.servicebus.windows.net/a/b/ Service Bus Backend Naming Routing Fabric Message Buffer Policy Frontend Nodes HTTP(S) POST/PUT HTTP(S) GET/DELETE Msg Msg ExpiresAfter MaxMessageCount … Sender Manager Receiver
Démo Utilisation des Message Buffers: Récupération de commande par partenaire date
Traitement des commandes Schéma fonctionnel Nouvelle commande Partenaires Audit des commandes Site Web: E-Commerce Catalogue Order Services Application d’audit MessageBuffer Commande HTTP Logistique Traitement des commandes Réseau entreprise Membership Services Order Services CRM
Access Control Service date
ACS: vue d’ensemble Contrôle d’accès fondé sur les assertions (ou revendications) == Claims-Based Access Control Protocole complètement RESTful Utilisable sur n’importe quelle plateforme (SDK PHP, Java) Implémente OAuth WRAP & SWT WRAP = Web Resource Authorization Protocol SWT = Simple Web Tokens http://groups.google.com/group/oauth-wrap-wg Intégration avec ADFS v2 Permet la délégation simple
ACS: les grands principes 3. Transformer revendications sur la base des règles de contrôle d’accès 1. Définir les règles de contrôle d’accès ACS 4. Retourne token (résultat de l’étape 3) 0. confiance établie: secrets + certs 2. Envoyer token (revendications; e.g. identité) 6. Vérifier les Revendications (token) Service (Relying Party) Utilisateur ou Application 5. Envoyer le token avec la requête
ACS: en termes WRAP… Chapitre 1.1, v0.9.7.2 3. Transformer revendications sur la base des règles de contrôle d’accès 1. Définir les règles de contrôle d’accès Authorizaton Server 4. Retourne token (résultat de l’étape 3) 0. confiance établie: secrets + certs 2. Envoyer token (revendications; e.g. identité) 6. Vérifier les Revendications (token) Protected Resource Client 5. Envoyer le token avec la requête
Requêtes de Tokens ACS Trois méthodes possibles pour demander un Token Simple text (Plaintext) Le plus simple à implémenter, pas de crypto Token signé (Signed Token) Permet la délégation simple, HMAC SHA 256 nécessaire Token SAML émis par un AD FS v2 (SAML bearer token) Permet l’intégration avec le SI entreprise ACS renvoie toujours le même type de token: SWT
C’est quoi un SWT? role=Admin%2cUser& customerName=Contoso%20Corporation& Issuer=https%3a%2f%2fadatum.accesscontrol.windows.net%2fWRAPv0.8& Audience=http%3a%2f%2fadatum%2fbillprint& ExpiresOn=1255912922& HMACSHA256=yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d
Comment demander un SWT? (version Plaintext, section 5.1 de la spec) POST /WRAPv0.8/ HTTP/1.1 Host:adatum.accesscontrol.windows.net applies_to=http%3A%2F%2Fadatum.com%2Fservices%2F& wrap_name=adatumcustomer1& wrap_password=5znwNTZDYC39dqhFOTDtnaikd1hiuRa4XaAj3Y9kJhQ%3D
Comment demander un SWT. (version Signed Token, section 5 Comment demander un SWT? (version Signed Token, section 5.2 de la spec) POST /WRAPv0.8/ HTTP/1.1 Host:adatum.accesscontrol.windows.net applies_to=http%3A%2F%2Fadatum.com%2Fservices%2F& wrap_SWT=role%3DAdmin%252cUser%26Issuer%3Dadatumcustomer1%26ExpiresOn%3D1255912922%26HMACSHA256%3DyuVO%252fwc58%252ftYP36%252fDM1mS%252fHr0hswpsGTWwgfvAbpL64%253d
Comment demander un SWT? (version SAML Token, section 5.2 de la spec) POST /WRAPv0.8/ HTTP/1.1 Host:adatum.accesscontrol.windows.net applies_to=http%3A%2F%2Fadatum.com%2Fservices%2F& wrap_SAML=<…SAML Bearer Token…>
Les différentes briques d’ACS Windows Azure ACS Token Issuing Endpoint ACS Management Endpoint ACS Token Issuing Endpoint ACS Management Endpoint ACS Token Issuing Endpoint ACS Management Endpoint Portal SDK ACM.exe Mgmt Browser
Démo Portail de gestion acm.exe et AcmBrowser Protection d’un service par ACS: Mise à jour de la commande date
Traitement des commandes Schéma fonctionnel Nouvelle commande Partenaires Audit des commandes Site Web: E-Commerce Catalogue Order Services Application d’audit MessageBuffer Commande HTTP Logistique Traitement des commandes Réseau entreprise Membership Services Order Services Order Processing Mise à jour du statut CRM
ACS & intégration entreprise ACS accepte des tokens SAML signés pour les requêtes de tokens SWT AD FS v2 peut générer ces tokens SAML WIF est la façon la plus simple de requêter un token SAML de la part de AD FS v2 Windows Identity Framework ACS doit connaître la clé de signature pour valider le token SAML ACS publie et comprend les métadonnées WS-Fed Cela permet d’automatiser l’établissement de la relation de confiance
Intégration AD FS v2 AD FS V2 ACS Service Namespace REST Web Service Client
Intégration AD FS v2: Mise à jour de la commande, authentifiée Démo Intégration AD FS v2: Mise à jour de la commande, authentifiée date
Conclusion date
Tout Azure aux TechDays Titre Heure Session Introduction à Windows Azure Lundi 8, 16h à 17h CLO202 Azure: comment migrer une application Lundi 8, 17h30 à 18h30 CLO301 Gestion et stratégie storage sous Azure Mardi 9, 13h à 14h PAR105 Windows Azure AppFabric CLO305 Azure et les technologies non Microsoft Mercredi 10, 11h à 12h INT301 SQL Azure & Azure Storage Mercredi 10, 16h à 17h CLO304 Ateliers encadrés Heure Lundi 8 14h30 – 15h30 17h30 – 18h30 Mardi 9 Mercredi 10 Ateliers assurés par Wygwam