Lausanne ASP NET Web API 2 Services web
| 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 yves. peneveyre@ctp. com benjamin. soulier@ctp. com
Introduction Pourquoi Web API ? Quoi de neuf ? Redirection par attributs Tests unitaires OWIN & OData Sécurité Oauth 2. 0 Agenda
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
HTTP Services Web
Pour tout type de client
Montée en charge
Rester simple SOAP
Capitaliser le Web - Construire des APIs Web 2
Démarrer avec ASP. NET Web API 2 Disponible en tant que package Nu. Get 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 (IHttp. Action. Result) OData : $select, $expand Securité des Web API (OAuth 2. 0)
Redirection par attributs config. Routes. Map. Http. Route( name: “Todos. For. Todo. List", route. Template: "api/todolists/{id}/todos", defaults: new { controller = “todolists”, action = “Get. Todos” } ); Faire que les routes soient plus proches des ressources public IEnumerable<Todo. Item> Get. Todos() { … }
Redirection par attributs config. Map. Http. Attribute. Routes(); [Route("api/todolists/{id}/todos")] public IEnumerable<Todo. Item> Get. Todos(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 : 1. 2. 3. Créer un contrôleur Affecter les propriétés au besoin (Request, Configuration, etc. ) Appeler l’action Utiliser IHttp. Action. Result pour encapsuler toute logique réutilisable Disponibilité de fonctions helper pratique
DEMO Test Unitaire de Web API
Intégration 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 OData. Lib 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 Demande d’autorisation Autorisation accordée Autorisation d’accès Jeton d’accès
OAuth 2. 0 – Obtention d’autorisation Serveur d’autorisation user 2 Navigateur Utilisateur <Client ID> CODE 302 Point d’accès pour autorisation Point d’accès de jetons 3 <Client ID> 302 1 Client Ressource Protégée
OAuth 2. 0 – Demande de jeton Serveur d’autorisation Point d’accès pour autorisation client <Client ID> 1 Point d’accès de jetons 2 refresh token access token CODE Client Ressource Protégée
OAuth 2. 0 – Requête de ressource Serveur d’autorisation Point d’accès pour autorisation 1 Point d’accès de jetons Authorization: Bearer refresh token 2 access token Client Ressource Protégée
OAuth 2. 0 – Accès au jeton de Serveur d’autorisation rafraichissement Point d’accès de jetons Point d’accès pour autorisation client <Client ID> 1 2 refresh token access token refresh token Client Ressource Protégée
OAuth 2. 0 – Support de serveur d’autorisation 2 Options : 1. 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 2. Utiliser un serveur d’autorisation existant Windows Azure Active Directory Federation Services sous Windows Server 2012 R 2
Quoi de neuf avec ASP. NET Web API 2 Redirection par attributs Intégration avec OWIN Test unitaire plus facile (IHttp. Action. Result) 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 Linked. In : http: //www. linkedin. com/in/yvespeneveyre Benjamin Soulier benjamin. soulier@ctp. com Blog : http: //www. soulier. ch Twitter : @bsoulier Linked. In : http: //www. linkedin. com/in/bsoulier
- Slides: 34