domingo, 12 de junio de 2016

Trabajando con CodeFirst en Azure App Service

Hola a todos,

Este es un post que debería empezar con algo así como, es mejor tener amigos que dinero. Gracias a Cheo y especialmente a Warnov por ayudarme a entender los cambios de Azure.

Escribo estas notas por que seguramente podrán ayudar a algunos de ustedes. Para quienes hemos trabajado con Azure Mobile Services usando CodeFirst y migraciones automáticas, seguro nos fue común encontrar el post de Fredrik Normén, indicando que debiamos asignar los permisos al usuario autogenerado por Azure.

A hoy las cosas han empezado a cambiar y ya Microsoft anunció la retirada de Azure Mobile Services para continuar con la evolución Azure App Service. Los cambios no son mayores en la construcción, pero si nos obligan a estar más concientes de lo que hacemos.

Ahora no todo se hace automaticamente con el paso a paso de Azure, cada componente y parte debemos crearla nosotros mismos. Es decir:

1. Debemos crear nuestro Mobile App en el portal nuevo


2. Creamos una base de datos y asociamos la base de datos siguiendo el paso a paso


Como vemos el cambio es simplemente que ahora debemos hacer las cosas manualmente, eso implica por lo tanto que debemos crear el login y usuario de base de datos para que nuestras migraciones de CodeFirst funcionen. Le explicación de los cambios en SQL Azure V12 está en MSDN.

Sin embargo los pasos son muy simples:

En la base de datos master creas un login:

CREATE LOGIN TuLogin WITH PASSWORD = 'YourPassword';

En tu base de datos creas el usuario asociado al login que acabaste de crear:

CREATE USER TuUsuario FOR LOGIN TuLogin 

EXEC sp_addrolemember N'db_owner', N'TuUsuario'

Por último hacemos lo que haciamos antes en Azure Mobile Services para que nuestras Migraciones Automáticas funcionen.

GRANT CONTROL ON SCHEMA::[dbo] TO TuUsuario 

Espero que esto les pueda resultar de ayuda, a veces nos malacostumbramos a que todo ocurra automáticamente sin entender que pasa y bueno, aunque es útil para aprendizaje e implementaciones de demos, es mejor ser más concientes de todo y tener el control cuando vamos a producción.

Algo adicional, no de SQL Azure si no del Api y que es muy importante, es que ahora el Api de AppService para Móvil no tiene una ApiKey para asegurar la conexión, por lo tanto además debemos implementar nuestra propia seguridad, sea oAuth o algun esquema de protección como HMAC Autentication

Hasta pronto