24.01.2017
Desarrollo y
gestión de apps
móviles -
Azure Api
Management
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
@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
@plainconcepts 4
¿Qué es Azure API Management?
• 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
6
Portal de Api Management
Portal de Desarrolladores
• 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
• Crear un API.
• Importarla con Swagger
• Crear un Producto
• Asignarlo al API.
• Crear un Usuario.
Demo Publish Portal
@plainconcepts 8
• 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
• Ir al portal de desarrollador.
• Enseñar los ejemplos de código.
• Incluir Disqus para comentarios.
Portal de desarrollo demo
@plainconcepts 10
11
Directivas
• <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 12
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
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>
@plainconcepts 15
Scope Directivas
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
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
• Crear directiva de cuotas
• Mostrar Git.
• Crear directiva convertir JSON en XML
Demo Directivas
@plainconcepts 18
19
Seguridad Con Api Management
• 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
21
Api Management Referencias
Precios
@plainconcepts 22
• 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
@plainconcepts
¡GRACIAS!
www.plainconcepts.com
http://geeks.ms/windowsplatform/
https://github.com/WindowsPlatformTeam
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

Azure API Management

  • 1.
    24.01.2017 Desarrollo y gestión deapps móviles - Azure Api Management
  • 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 developeren 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
  • 4.
    @plainconcepts 4 ¿Qué esAzure API Management?
  • 5.
    • Portal paradesarrolladores 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
  • 6.
    6 Portal de ApiManagement Portal de Desarrolladores
  • 7.
    • APIs: EnApi 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 unAPI. • Importarla con Swagger • Crear un Producto • Asignarlo al API. • Crear un Usuario. Demo Publish Portal @plainconcepts 8
  • 9.
    • Portal dondelos 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 alportal de desarrollador. • Enseñar los ejemplos de código. • Incluir Disqus para comentarios. Portal de desarrollo demo @plainconcepts 10
  • 11.
  • 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 12
  • 13.
    Se puede añadircó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 concó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>
  • 15.
  • 16.
    Este puede serun 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 denuestras 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 directivade cuotas • Mostrar Git. • Crear directiva convertir JSON en XML Demo Directivas @plainconcepts 18
  • 19.
  • 20.
    • Crear unadirectiva 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
  • 21.
  • 22.
  • 23.
    • Api ManagementGet 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
  • 24.
  • 25.
    www.plainconcepts.com MADRID Paseo de laCastellana 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