| lausanne asp.net web api 2 services web pour applications web modernes et mobiles yves peneveyre /...

34
| Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre / Benjamin Soulier Architecte Senior / Expert Technique Cambridge Technology Partners [email protected] [email protected]

Upload: alison-perrier

Post on 04-Apr-2015

117 views

Category:

Documents


0 download

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

| 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© 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.