Date post: | 04-Apr-2015 |
Category: |
Documents |
Upload: | alison-perrier |
View: | 116 times |
Download: | 0 times |
| Lausanne
ASP.NET Web API 2Services web pour applications web modernes et mobilesYves Peneveyre / Benjamin SoulierArchitecte Senior / Expert TechniqueCambridge Technology [email protected]@ctp.com
Agenda
IntroductionPourquoi Web API ?Quoi de neuf ?
Redirection par attributsTests unitairesOWIN & ODataSécuritéOauth 2.0
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.
Intervenants
Yves PeneveyreArchitecte Senior
Benjamin SoulierExpert TechniqueMVP Azure
DEMO1ère Web API avec ASP.NET Web API 2
Services WebHTTP
Pour tout type de client
NavigateursAppareils
électroniques Mobiles Tablettes
? ? ? ?
App
Montée en charge
NavigateursAppareils
électroniques Mobiles Tablettes
? ? ? ?
App
Rester simple
NavigateursAppareils
électroniques Mobiles Tablettes
? ? ? ?
App
.config
SOAP
Capitaliser le Web - Construire des APIs Web
NavigateursAppareils
électroniques Mobiles Tablettes
App
ASP.NET Web API 2
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
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)
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() { … }
Redirection par attributsconfig.MapHttpAttributeRoutes();
[Route("api/todolists/{id}/todos")]public IEnumerable<TodoItem> GetTodos(int id) { … }
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) { … }
DEMORedirection par attributs
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
DEMOTest 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 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
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
DEMOOData - $select et $expand
Sécurité Web API
Faites-vous confiance à cette app ?
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
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.
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
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
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
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
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
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
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)
Ressources
Pour plus d’informationhttp://www.asp.net/vnexthttp://www.asp.net/webapi
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
© 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.