| lausanne asp.net web api 2 services web pour applications web modernes et mobiles yves peneveyre /...
TRANSCRIPT
![Page 1: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/1.jpg)
| Lausanne
ASP.NET Web API 2Services web pour applications web modernes et mobilesYves Peneveyre / Benjamin SoulierArchitecte Senior / Expert TechniqueCambridge Technology [email protected]@ctp.com
![Page 2: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/2.jpg)
Agenda
IntroductionPourquoi Web API ?Quoi de neuf ?
Redirection par attributsTests unitairesOWIN & ODataSécuritéOauth 2.0
![Page 3: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/3.jpg)
Cambridge Technology Partners
Click icon to add picture
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.
![Page 4: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/4.jpg)
Intervenants
Yves PeneveyreArchitecte Senior
Benjamin SoulierExpert TechniqueMVP Azure
![Page 5: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/5.jpg)
DEMO1ère Web API avec ASP.NET Web API 2
![Page 6: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/6.jpg)
Services WebHTTP
![Page 7: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/7.jpg)
Pour tout type de client
NavigateursAppareils
électroniques Mobiles Tablettes
? ? ? ?
App
![Page 8: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/8.jpg)
Montée en charge
NavigateursAppareils
électroniques Mobiles Tablettes
? ? ? ?
App
![Page 9: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/9.jpg)
Rester simple
NavigateursAppareils
électroniques Mobiles Tablettes
? ? ? ?
App
.config
SOAP
![Page 10: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/10.jpg)
Capitaliser le Web - Construire des APIs Web
NavigateursAppareils
électroniques Mobiles Tablettes
App
ASP.NET Web API 2
![Page 11: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/11.jpg)
Démarrer avec ASP.NET Web API 2Disponible en tant que package NuGetLivré avec Visual Studio 2013Supporte .NET 4.5 et au-delàCode source disponible à http://aspnetwebstack.codeplex.com
![Page 12: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/12.jpg)
Quoi de neuf avec ASP.NET Web API 2Redirection par attributsIntégration avec OWINTest unitaire plus facile (IHttpActionResult)OData : $select, $expandSecurité des Web API (OAuth 2.0)
![Page 13: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/13.jpg)
Redirection par attributs
Faire que les routes soient plus proches des ressources
config.Routes.MapHttpRoute( name: “TodosForTodoList", routeTemplate: "api/todolists/{id}/todos", defaults: new { controller = “todolists”, action = “GetTodos” });
Controller Selector
Action Selector
public IEnumerable<TodoItem> GetTodos() { … }
![Page 14: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/14.jpg)
Redirection par attributsconfig.MapHttpAttributeRoutes();
[Route("api/todolists/{id}/todos")]public IEnumerable<TodoItem> GetTodos(int id) { … }
![Page 15: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/15.jpg)
Redirection par attributsValeurs optionnelles
Valeurs pas défaut
Contraintes
[Route(“Demographics/{zipcode?}")]public Demographics Get(int? zipcode) { … }
[Route("people/{id:int}")]public Person Get(int id) { … }
[Route("people/{name:alpha}")]public Person Get(string name) { … }
[Route("Demographics/{zipcode=98052}")]public Demographics Get(int zipcode) { … }
![Page 16: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/16.jpg)
DEMORedirection par attributs
![Page 17: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/17.jpg)
Test unitaire des Web APIs
Plus compliqué que ce ça ne devrait…Maintenant, pour écrire un test unitaire il suffit de :1. Créer un contrôleur2. Affecter les propriétés au besoin (Request, Configuration, etc.)3. Appeler l’action
Utiliser IHttpActionResult pour encapsuler toute logique réutilisableDisponibilité de fonctions helper pratique
![Page 18: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/18.jpg)
DEMOTest Unitaire de Web API
![Page 19: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/19.jpg)
Intégration OWIN
OWIN = Open Web Interface for .NET (http://owin.org)Définit une interface commune découplant les applications web des serveurs webInspiré de node.js, Rack ou WSGI
Se trouve dans le pipeline ASP.NETIntégré fortement au sein de ASP.NETEx. 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
![Page 20: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/20.jpg)
ASP.NET Web API OData
Composants pour implémenter des services OdataCré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 ODataLibMême concepts que WCF Data Services
Déjà disponible avec Visual Studio 2012 Update 2Supporte maintenant $select, $expand
![Page 21: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/21.jpg)
DEMOOData - $select et $expand
![Page 22: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/22.jpg)
Sécurité Web API
Faites-vous confiance à cette app ?
![Page 23: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/23.jpg)
Trop de difficultés pour sécuriser les Web APIUtilisateurs pourraient ne pas faire confiance à des apps et donner leurs informations de connexionLes apps ne veulent pas stocker les informations utilisateursLa plupart des serveurs ne le veulent pas non plus
![Page 24: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/24.jpg)
OAuth 2.0
Framework pour autoriser l’accès aux ressources protégées d’un utilisateur à des applications clientesStandard IETF (RFCs 6749 et 6750)
Destiné à fonctionner avec les services HTTPProfiles multiples, selon le client et le type d’accèsIl ne s’agit pas d’un protocole d’authentification… mais d’une base pour en créer une.
![Page 25: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/25.jpg)
OAuth 2.0
Autorisation accordée
Autorisation d’accès
Ressource protégée
Jeton d’accès
Serveur d’autorisation
Server hébergeant la
ressource (Web API)
Propriétaire de la ressource
(utilisateur)
Client
Demande d’autorisation
Jeton d’accès
Cher utilisateur, je peux utiliser tes
photos ?
OK
L’utilisateur a dit que je pouvais accéder à ses photos. Voici la
preuveVoici mon jeton d’accès. Svp, j’aimerais les photos
de cet utilisateur
Ca me semble correct. Voici un jeton d’accès
D’accord, les voici
![Page 26: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/26.jpg)
OAuth 2.0 – Obtention d’autorisation
Ressource ProtégéeClient
Serveur d’autorisationPoint d’accès
pour autorisation
Point d’accèsde jetons
NavigateurCOD
E3302
302
1
<Client ID>
2 <Client ID>
user
Utilisateur
![Page 27: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/27.jpg)
OAuth 2.0 – Demande de jeton
2
access tokenrefresh token
1
<Client ID>client
Ressource ProtégéeClient
Serveur d’autorisationPoint d’accès
pour autorisation
Point d’accèsde jetons
CODE
![Page 28: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/28.jpg)
OAuth 2.0 – Requête de ressource
2
1 Authorization: Bearer
access token
refresh token
Ressource ProtégéeClient
Serveur d’autorisationPoint d’accès
pour autorisation
Point d’accèsde jetons
![Page 29: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/29.jpg)
OAuth 2.0 – Accès au jeton de rafraichissement
2
access token
refresh token
refresh token
1
<Client ID>
client
Ressource ProtégéeClient
Serveur d’autorisationPoint d’accès
pour autorisation
Point d’accèsde jetons
![Page 30: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/30.jpg)
OAuth 2.0 – Support de serveur d’autorisation
2 Options :1. Héberger votre propre serveur
d’autorisationSimple serveur authz disponible en aperçu dans le modèle de code “Single Page Application”Support de serveur authz dans OWIN
2. Utiliser un serveur d’autorisation existant
Windows Azure Active DirectoryActive Directory Federation Services sous Windows Server 2012 R2
![Page 31: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/31.jpg)
Quoi de neuf avec ASP.NET Web API 2Redirection par attributsIntégration avec OWINTest unitaire plus facile (IHttpActionResult)OData : $select, $expandSecurité des Web API (OAuth 2.0)
![Page 32: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/32.jpg)
Ressources
Pour plus d’informationhttp://www.asp.net/vnexthttp://www.asp.net/webapi
![Page 33: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/33.jpg)
Nous contacter
Yves [email protected] : http://www.peneveyre.com/blogTwitter : @ypeneveyreLinkedIn : http://www.linkedin.com/in/yvespeneveyre
Benjamin [email protected] : http://www.soulier.chTwitter : @bsoulierLinkedIn : http://www.linkedin.com/in/bsoulier
![Page 34: | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique](https://reader036.vdocument.in/reader036/viewer/2022081504/551d9dc2497959293b8e1642/html5/thumbnails/34.jpg)
© 2012 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.
© 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.