Azure API Management permite gestionar APIs de forma centralizada a través de un portal para desarrolladores. Ofrece características como documentación, seguridad, análisis y directivas para modificar las solicitudes y respuestas. Las directivas pueden usarse para añadir encabezados, comprobar autenticación, establecer cuotas y convertir formatos. El ciclo de ejecución de las directivas incluye fases como entrada, backend y salida.
2. Qué veremos
2
1. ¿Qué es Azure API Management?
2. ¿Por qué Azure API Management?
3. Portal Api Management/Desarrollador
4. Directivas
5. Seguridad con Api Manament
3. @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ópez
DEVELOPER DEVELOPER
@_aclopez @fmolmedo
https://github.com/WindowsPlatformTeam
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 5
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 7
8. • Crear un API.
• Importarla con Swagger
• Crear un Producto
• Asignarlo al API.
• Crear un Usuario.
Demo Publish Portal
@plainconcepts 8
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 9
10. • Ir al portal de desarrollador.
• Enseñar los ejemplos de código.
• Incluir Disqus para comentarios.
Portal de desarrollo demo
@plainconcepts 10
13. 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.
13
@(true)
@((1+1).ToString())
@{
string value;
if (Context.Request.Headers.TryGetValue("Authorization", out value))
{
return Encoding.UTF8.GetString(Convert.FromBase64String(value));
}
else
{
return null;
}
}
@plainconcepts
Directivas con C#CÓDIGO EN LAS DIRECTIVAS
14. Las políticas con código se suelen usar con las políticas de tipo <choose>
14
<choose>
<whencondition="Boolean
expression | Boolean constant">
</when>
<otherwise>
</otherwise>
</choose>
@plainconcepts
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>
16. Este puede ser un ejemplo de uso de políticas en diferentes sitios de ejecución.
16
<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>
@plainconcepts
Scope de las DirectivasCICLO DE EJECUCIÓN
17. La configuración de nuestras directivas depende de donde las coloquemos. Existen 4 posibles formas de ejecutar
nuestras directivas: inbound, backend, outbound y onerror.
17
<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>
@plainconcepts
Scope de las DirectivasCICLO DE EJECUCIÓN
18. • Crear directiva de cuotas
• Mostrar Git.
• Crear directiva convertir JSON en XML
Demo Directivas
@plainconcepts 18
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 20
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 23
25. www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid. España
T. (+34) 91 5346 836
BILBAO
Nervión 3 , 6º
48001 Bilbao. España
T. (+34) 94 6008 168
BARCELONA
Av. Josep Tarradellas 10, 6º 1ª
08029 Barcelona. España
T. (+34) 93 3607 114
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla. España
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
1511, Third Ave
Seattle WA 98101. USA
T. (+1) 206 708 1285