+ All Categories
Home > Documents > | Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre /...

| Lausanne ASP.NET Web API 2 Services web pour applications web modernes et mobiles Yves Peneveyre /...

Date post: 04-Apr-2015
Category:
Upload: alison-perrier
View: 116 times
Download: 0 times
Share this document with a friend
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]
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.


Recommended