Services web pour applications web modernes et mobiles ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique Cambridge Technology Partners yves.peneveyre@ctp.com benjamin.soulier@ctp.com
Redirection par attributs Tests unitaires OWIN & OData Sécurité Introduction Pourquoi Web API ? Quoi de neuf ? Redirection par attributs Tests unitaires OWIN & OData Sécurité Oauth 2.0
Cambridge Technology Partners Nos plus de 250 employés servent un portfolio varié de grandes PMEs et de sociétés multinationales dans de nombreux secteurs d'activités, à partir de nos bureaux suisses de Bâle, Genève & Zürich et de nos centres globaux de réalisation en Hongrie et en Ukraine.
Intervenants Yves Peneveyre Architecte Senior Benjamin Soulier Expert Technique MVP Azure
DEMO 1ère Web API avec ASP.NET Web API 2
Services Web HTTP
Pour tout type de client App ? ? ? ? Navigateurs Appareils électroniques Mobiles Tablettes
Appareils électroniques Montée en charge App ? ? ? ? Navigateurs Appareils électroniques Mobiles Tablettes
Appareils électroniques Rester simple App .config ? ? ? ? SOAP Navigateurs Appareils électroniques Mobiles Tablettes
Capitaliser le Web - Construire des APIs Web App 2 ASP.NET Web API Navigateurs Appareils électroniques Mobiles Tablettes
Démarrer avec ASP.NET Web API 2 Disponible en tant que package NuGet Livré avec Visual Studio 2013 Supporte .NET 4.5 et au-delà Code source disponible à http://aspnetwebstack.codeplex.com
Quoi de neuf avec ASP.NET Web API 2 Redirection par attributs Intégration avec OWIN Test unitaire plus facile (IHttpActionResult) OData : $select, $expand Securité des Web API (OAuth 2.0)
Redirection par attributs config.Routes.MapHttpRoute( name: “TodosForTodoList", routeTemplate: "api/todolists/{id}/todos", defaults: new { controller = “todolists”, action = “GetTodos” } ); Faire que les routes soient plus proches des ressources Controller Selector Action Selector public IEnumerable<TodoItem> GetTodos() { … }
Redirection par attributs config.MapHttpAttributeRoutes(); [Route("api/todolists/{id}/todos")] public IEnumerable<TodoItem> GetTodos(int id) { … }
Redirection par attributs Valeurs optionnelles Valeurs pas défaut Contraintes [Route(“Demographics/{zipcode?}")] public Demographics Get(int? zipcode) { … } [Route("Demographics/{zipcode=98052}")] public Demographics Get(int zipcode) { … } [Route("people/{id:int}")] public Person Get(int id) { … } [Route("people/{name:alpha}")] public Person Get(string name) { … }
DEMO Redirection par attributs
Test unitaire des Web APIs Plus compliqué que ce ça ne devrait… Maintenant, pour écrire un test unitaire il suffit de : Créer un contrôleur Affecter les propriétés au besoin (Request, Configuration, etc.) Appeler l’action Utiliser IHttpActionResult pour encapsuler toute logique réutilisable Disponibilité de fonctions helper pratique
DEMO Test Unitaire de Web API
Intégration OWIN OWIN = Open Web Interface for .NET (http://owin.org) Définit une interface commune découplant les applications web des serveurs web Inspiré de node.js, Rack ou WSGI Se trouve dans le pipeline ASP.NET Intégré fortement au sein de ASP.NET Ex. Exécuter un middleware d’authentification pendant l’étape Authenticate de ASP.NET Exécuter vos Web APIs sur n’importe quel hôte compatible OWIN
ASP.NET Web API OData Composants pour implémenter des services Odata Créateurs de modèle, formateurs (Atom/JSON/XML), interpréteurs de path et query, générateur d’expression LINQ, etc. Utilisez-les autant que vous le voulez Basé sur ODataLib Même concepts que WCF Data Services Déjà disponible avec Visual Studio 2012 Update 2 Supporte maintenant $select, $expand
DEMO OData - $select et $expand
Sécurité Web API Faites-vous confiance à cette app ?
Trop de difficultés pour sécuriser les Web API Utilisateurs pourraient ne pas faire confiance à des apps et donner leurs informations de connexion Les apps ne veulent pas stocker les informations utilisateurs La plupart des serveurs ne le veulent pas non plus
OAuth 2.0 Framework pour autoriser l’accès aux ressources protégées d’un utilisateur à des applications clientes Standard IETF (RFCs 6749 et 6750) Destiné à fonctionner avec les services HTTP Profiles multiples, selon le client et le type d’accès Il ne s’agit pas d’un protocole d’authentification … mais d’une base pour en créer une.
OAuth 2.0 Client Propriétaire de la ressource (utilisateur) Cher utilisateur, je peux utiliser tes photos ? OK OAuth 2.0 Demande d’autorisation Client Propriétaire de la ressource (utilisateur) L’utilisateur a dit que je pouvais accéder à ses photos. Voici la preuve Autorisation accordée Voici mon jeton d’accès. Svp, j’aimerais les photos de cet utilisateur Autorisation d’accès Serveur d’autorisation Jeton d’accès D’accord, les voici Ca me semble correct. Voici un jeton d’accès Jeton d’accès Server hébergeant la ressource (Web API) Ressource protégée
OAuth 2.0 – Obtention d’autorisation Serveur d’autorisation Point d’accès de jetons Point d’accès pour autorisation 2 <Client ID> user Navigateur 3 302 Utilisateur CODE 302 1 <Client ID> Ressource Protégée Client
OAuth 2.0 – Demande de jeton Serveur d’autorisation Point d’accès de jetons Point d’accès pour autorisation 1 <Client ID> client 2 refresh token access token CODE Ressource Protégée Client
OAuth 2.0 – Requête de ressource Serveur d’autorisation Point d’accès de jetons Point d’accès pour autorisation refresh token Ressource Protégée Client 1 Authorization: Bearer access token 2
OAuth 2.0 – Accès au jeton de rafraichissement Serveur d’autorisation Point d’accès de jetons Point d’accès pour autorisation 1 <Client ID> client 2 refresh token access token Ressource Protégée Client refresh token
OAuth 2.0 – Support de serveur d’autorisation 2 Options : Héberger votre propre serveur d’autorisation Simple serveur authz disponible en aperçu dans le modèle de code “Single Page Application” Support de serveur authz dans OWIN Utiliser un serveur d’autorisation existant Windows Azure Active Directory Active Directory Federation Services sous Windows Server 2012 R2
Quoi de neuf avec ASP.NET Web API 2 Redirection par attributs Intégration avec OWIN Test unitaire plus facile (IHttpActionResult) OData : $select, $expand Securité des Web API (OAuth 2.0)
Ressources Pour plus d’information http://www.asp.net/vnext http://www.asp.net/webapi
Nous contacter Yves Peneveyre yves.peneveyre@ctp.com Blog : http://www.peneveyre.com/blog Twitter : @ypeneveyre LinkedIn : http://www.linkedin.com/in/yvespeneveyre Benjamin Soulier benjamin.soulier@ctp.com Blog : http://www.soulier.ch Twitter : @bsoulier LinkedIn : http://www.linkedin.com/in/bsoulier
4/2/2017 1:39 PM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.