azure api management
TRANSCRIPT
24.01.2017
Desarrollo y gestión de apps móviles -Azure Api Management
2
Qué veremos 1. ¿Qué es Azure API Management?2. ¿Por qué Azure API Management?3. Portal Api Management/Desarrollador4. Directivas5. Seguridad con Api Manament
@plainconcepts 3
Software developer en Plain Concepts en Windows Platform Team.
Francisco Olmedo
Software developer en Plain Concepts en Windows Platform Team.
Ángel Carlos LópezDEVELOPER DEVELOPER
@_aclopez @fmolmedo
https://github.com/WindowsPlatformTeam
4@plainconcepts
¿Qué es Azure API Management?
5
• Portal para desarrolladores que usen el API con documentación y ejemplos• Crear una fachada de una o varias de nuestras APIs para poder gestionarlas mejor.• Añadir nuevas características fácilmente a nuestro backend.• Información del uso y la salud de nuestra API con las analíticas del portal.
¿Por qué Azure Api Management?
@plainconcepts
6
Portal de Api ManagementPortal de Desarrolladores
7
• APIs: En Api Management podemos importar tantas APIs queramos.• Producto: Engloba varias APIs. Puede haber APIs en diferentes
producto. Un producto es un conjunto de políticas que se aplican a las APIs que tenga suscritas.
• Grupos: Por defecto hay tres grupos: • Administradores, • Desarrolladores • Invitados. • Se pueden suscribir a los productos para ver los mismos. Se pueden crear más
grupos personalizados.• Directivas: Reglas que se pueden poner en medio de la ejecución de
nuestros métodos del API. Se pueden asignar a una API o a productos.
Conceptos
@plainconcepts
8
• Crear un API.• Importarla con Swagger• Crear un Producto• Asignarlo al API.• Crear un Usuario.
Demo Publish Portal
@plainconcepts
9
• Portal donde los desarrolladores pueden probar el API• El estilo es personalizable• Existen ejemplos de como poder llamar al API en diferentes
lenguajes.• Tienen acceso a sus estadísticas.
Portal de desarrollador
@plainconcepts
10
• Ir al portal de desarrollador.• Enseñar los ejemplos de código.• Incluir Disqus para comentarios.
Portal de desarrollo demo
@plainconcepts
11
Directivas
12
• <set-variablename="variable name"value="Expression | String literal"/>– <rate-limit calls="20" renewal-period="90" />
• <set-header name="header name" exists-action="override | skip | append"><value>value</value>
</set-header>– <check-header name="Authorization" failed-check-httpcode="401" failed-check-
error-message="Not authorized" ignore-case="false"> <value>f6dc69a089844cf6b2019bae6d36fac8</value>
</check-header>
• <set-status code=“” reason=“”/>
Tipos de directivas
@plainconcepts
13@plainconcepts
Se puede añadir código a nuestras directivas. Disponemos de la variable Context que nos da acceso a información del contexto de la llamada que podemos utilizar para crear un flujo
u otro.
@(true) @((1+1).ToString())@{ string value; if (Context.Request.Headers.TryGetValue("Authorization", out value)) { return Encoding.UTF8.GetString(Convert.FromBase64String(value)); } else { return null; } }
Directivas con C#CÓDIGO EN LAS DIRECTIVAS
14@plainconcepts
Las políticas con código se suelen usar con las políticas de tipo <choose>
<choose> <whencondition="Boolean
expression | Boolean constant"> </when> <otherwise> </otherwise>
</choose>
Directivas con C#CÓDIGO EN LAS DIRECTIVAS
<set-variable name="isMobile" value="@(context.Request.Headers["User-Agent"].Contains("iPad") || context.Request.Headers["User-Agent"].Contains("iPhone"))" /> <base /> <choose> <when condition="@(context.Variables.GetValueOrDefault<bool>("isMobile"))"> <set-query-parameter name="mobile" exists-action="override"> <value>true</value> </set-query-parameter> </when> <otherwise> <set-query-parameter name="mobile" exists-action="override"> <value>false</value> </set-query-parameter> </otherwise> </choose>
15@plainconcepts
Scope Directivas
16@plainconcepts
Este puede ser un ejemplo de uso de políticas en diferentes sitios de ejecución.
<policies> <inbound> <!–statementsto be applied to the request--> </inbound> <backend> <!–statementsto be applied before the request is forwarded to the backend service --> </backend> <outbound> <!–statementsto be applied to the response--> </outbound> <on-error> <!–statementsto be applied if there is an error --> </on-error></policies>
Scope de las DirectivasCICLO DE EJECUCIÓN
17@plainconcepts
La configuración de nuestras directivas depende de donde las coloquemos. Existen 4 posibles formas de ejecutar nuestras directivas: inbound, backend, outbound y onerror.
<policies> <inbound> <set-variable name="isMobile" value="@(context.Request.Headers["User-Agent"].Contains("iPad") || context.Request.Headers["User-Agent"].Contains("iPhone"))" /> <base /> <choose> <when condition="@(context.Variables.GetValueOrDefault<bool>("isMobile"))"> <set-query-parameter name="mobile" exists-action="override"> <value>true</value> </set-query-parameter> </when> <otherwise> <set-query-parameter name="mobile" exists-action="override"> <value>false</value> </set-query-parameter> </otherwise> </choose> </inbound> <outbound> <base /> <choose> <when condition="@(context.GetValueOrDefault<bool>("isMobile"))"> <xml-to-json kind="direct" apply="always" consider-accept-header="false"/> </when> </choose> </outbound> </policies>
Scope de las DirectivasCICLO DE EJECUCIÓN
18
• Crear directiva de cuotas• Mostrar Git.• Crear directiva convertir JSON en XML
Demo Directivas
@plainconcepts
19
Seguridad Con Api Management
20
• Crear una directiva con Basic Authentication para que los desarrolladores puedan probar.• Crear directiva de cuotas para evitar ataques• Crear directiva tamaño máximo del JSON.
Demo Seguridad
@plainconcepts
21
Api Management Referencias
22
Precios
@plainconcepts
23
• Api Management Get Started• https://docs.microsoft.com/en-us/azure/api-management/api-
management-get-started• Api Management Policies references:
• https://docs.microsoft.com/en-us/azure/api-management/api-management-policy-reference
• Api Management en Trello: • https://trello.com/b/FAA147vS/azure-api-management-product-roadmap
Referencias
@plainconcepts
@plainconcepts
¡GRACIAS!www.plainconcepts.comhttp://geeks.ms/windowsplatform/https://github.com/WindowsPlatformTeam
www.plainconcepts.com
MADRIDPaseo de la Castellana 163, 10º
28046 Madrid. EspañaT. (+34) 91 5346 836
BILBAONervión 3 , 6º
48001 Bilbao. EspañaT. (+34) 94 6008 168
BARCELONAAv. Josep Tarradellas 10, 6º 1ª
08029 Barcelona. EspañaT. (+34) 93 3607 114
SEVILLAAvenida de la innovación s/nEdificio Renta Sevilla, 3º A
41020 Sevilla. España
DUBAIDubai Internet City. Building 1
73030 Dubai. EAUT. (+971) 4 551 6653
LONDONImpact Hub Kings Cross24B York Way, N1 9AB
London. UK
SEATTLE1511, Third Ave
Seattle WA 98101. USAT. (+1) 206 708 1285