{
    "componentChunkName": "component---node-modules-gatsby-theme-try-ghost-src-templates-tag-js",
    "path": "/tag/azure/",
    "result": {"data":{"ghostTag":{"slug":"azure","url":"https://jlgarcia.fulldev.ninja/tag/azure/","name":"azure","visibility":"public","feature_image":null,"description":"Convirtamonos en Ninjas de Azure","meta_title":"Azure Ninjas","meta_description":"Convirtamonos en Ninjas de Azure, viendo algunos de los problemas que nos podemos encontrar en nuestro dia a dia.","featureImageSharp":null},"allGhostPost":{"edges":[{"node":{"id":"Ghost__Post__5a338158333e0f134c248f13","title":"Cloud Adventures: Android y Azure Active Directory Login","slug":"cloud-adventures-android-y-azure-active-directory-login","featured":false,"feature_image":"https://jlgarcia.fulldev.ninja/assets/images/2017/07/cloud-ninjaaz.png","excerpt":"Estreno otra sección, en este caso estará centrado en problemas que me he ido\nencontrado con los servicios Cloud a la hora de desarrollar alguna aplicación\nnativa para Android o IOS.\nEn este caso le toca el turno a Azure, por ciertas necesidades he tenido que\n\"pegarme\" con el servicio para que me funcionara el Login con el servicio de\nAzure Active Directory.\nVuelve a ser por el problema de la documentación existente, que creo que es el\núnico problema con los servicios Cloud, que la documentación","custom_excerpt":null,"visibility":"public","created_at_pretty":"12 Jul 2017","published_at_pretty":"19 Jul 2017","updated_at_pretty":"11 Oct 2017","created_at":"2017-07-12T18:20:23.000+02:00","published_at":"2017-07-19T21:39:07.000+02:00","updated_at":"2017-10-11T13:51:23.000+02:00","meta_title":null,"meta_description":null,"og_description":null,"og_image":null,"og_title":null,"twitter_description":null,"twitter_image":null,"twitter_title":null,"authors":[{"slug":"jlgarcia","url":"https://jlgarcia.fulldev.ninja/author/jlgarcia/","name":"Juan Luis Garcia Aparicio","bio":null,"cover_image":null,"profile_image":"https://jlgarcia.fulldev.ninja/assets/images/2017/12/Perfil.jpg","location":null,"website":null,"twitter":null,"facebook":null,"meta_title":null,"meta_description":null,"coverImageSharp":null,"profileImageSharp":null}],"primary_author":{"slug":"jlgarcia","url":"https://jlgarcia.fulldev.ninja/author/jlgarcia/","name":"Juan Luis Garcia Aparicio","bio":null,"cover_image":null,"profile_image":"https://jlgarcia.fulldev.ninja/assets/images/2017/12/Perfil.jpg","location":null,"website":null,"twitter":null,"facebook":null,"meta_title":null,"meta_description":null,"coverImageSharp":null,"profileImageSharp":{"base":"Perfil.jpg","publicURL":"/static/b0de6281fb28a266510b3b09b9243e5a/Perfil.jpg","imageMeta":{"width":307,"height":307},"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAUDBAb/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGzw6zC6zHn+cLYP//EAB0QAAICAQUAAAAAAAAAAAAAAAEDAAIEEyEiIzL/2gAIAQEAAQUCifca8KgcKWVfUpkHsG5pxX//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAdEAACAgEFAAAAAAAAAAAAAAAAARARcQISIUFR/9oACAEBAAY/AhU88xkb7N06a8P/xAAcEAEAAwEAAwEAAAAAAAAAAAABABEhMUFRYXH/2gAIAQEAAT8hR2pq40aqb+xIAeXibhW9JXr8joF4TBcSNe0//9oADAMBAAIAAwAAABDzDwD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAcEAEAAgIDAQAAAAAAAAAAAAABABEhUTFhcfD/2gAIAQEAAT8QyItrELaTlatLwU63MvEW6vUNdy4LZQDn7iVApV9VLtANdWwKkuYq4Er1VZ//2Q==","aspectRatio":1,"src":"/static/b0de6281fb28a266510b3b09b9243e5a/31709/Perfil.jpg","srcSet":"/static/b0de6281fb28a266510b3b09b9243e5a/f340b/Perfil.jpg 28w,\n/static/b0de6281fb28a266510b3b09b9243e5a/22d64/Perfil.jpg 55w,\n/static/b0de6281fb28a266510b3b09b9243e5a/31709/Perfil.jpg 110w,\n/static/b0de6281fb28a266510b3b09b9243e5a/aa249/Perfil.jpg 165w,\n/static/b0de6281fb28a266510b3b09b9243e5a/0dc33/Perfil.jpg 220w,\n/static/b0de6281fb28a266510b3b09b9243e5a/60667/Perfil.jpg 307w","srcWebp":"/static/b0de6281fb28a266510b3b09b9243e5a/8678c/Perfil.webp","srcSetWebp":"/static/b0de6281fb28a266510b3b09b9243e5a/59cda/Perfil.webp 28w,\n/static/b0de6281fb28a266510b3b09b9243e5a/7da75/Perfil.webp 55w,\n/static/b0de6281fb28a266510b3b09b9243e5a/8678c/Perfil.webp 110w,\n/static/b0de6281fb28a266510b3b09b9243e5a/f282e/Perfil.webp 165w,\n/static/b0de6281fb28a266510b3b09b9243e5a/a7b21/Perfil.webp 220w,\n/static/b0de6281fb28a266510b3b09b9243e5a/f59af/Perfil.webp 307w","sizes":"(max-width: 110px) 100vw, 110px"}}}},"primary_tag":{"slug":"azure","url":"https://jlgarcia.fulldev.ninja/tag/azure/","name":"azure","visibility":"public","feature_image":null,"description":"Convirtamonos en Ninjas de Azure","meta_title":"Azure Ninjas","meta_description":"Convirtamonos en Ninjas de Azure, viendo algunos de los problemas que nos podemos encontrar en nuestro dia a dia.","featureImageSharp":null},"tags":[{"slug":"azure","url":"https://jlgarcia.fulldev.ninja/tag/azure/","name":"azure","visibility":"public","feature_image":null,"description":"Convirtamonos en Ninjas de Azure","meta_title":"Azure Ninjas","meta_description":"Convirtamonos en Ninjas de Azure, viendo algunos de los problemas que nos podemos encontrar en nuestro dia a dia.","featureImageSharp":null},{"slug":"cloud","url":"https://jlgarcia.fulldev.ninja/tag/cloud/","name":"cloud","visibility":"public","feature_image":null,"description":null,"meta_title":"Cloud Ninjas","meta_description":"Veremos temas relacionados con los tres sistemas cloud más usados: Azure, AWS y Firebase.","featureImageSharp":null},{"slug":"android","url":"https://jlgarcia.fulldev.ninja/tag/android/","name":"android","visibility":"public","feature_image":null,"description":null,"meta_title":"Android Ninja","meta_description":"Post con problemas que me he ido encontrando trabajando con desarrollos para dispositivos Android.","featureImageSharp":null}],"plaintext":"Estreno otra sección, en este caso estará centrado en problemas que me he ido\nencontrado con los servicios Cloud a la hora de desarrollar alguna aplicación\nnativa para Android o IOS.\nEn este caso le toca el turno a Azure, por ciertas necesidades he tenido que\n\"pegarme\" con el servicio para que me funcionara el Login con el servicio de\nAzure Active Directory.\nVuelve a ser por el problema de la documentación existente, que creo que es el\núnico problema con los servicios Cloud, que la documentación o no esta clara o\nno esta actualizada.\n\nEste escenario es muy simple, queremos hacer login, con una app Android, usando\nusuarios pertenecientes a Azure Active Directory, en un principio debería ser\nbastante fácil pero por lo menos en mi caso he tenido algún que otro problema.\n\nPrimero de todo:\n\nConfigurar el AppService para el login\nTeóricamente bastante sencillo, vamos a la doc oficial:\nConfigure AAD in APPService\n[https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-how-to-configure-active-directory-authentication]\n\nY la seguimos, como tal hacemos todo y pensamos que todo esta bien, pero a la\nhora de probarlo falta alguna cosilla, que os voy adelantando por aqui:\n\n\n\nComo véis en la foto en las redirecciones URL permitidas necesitamos añadirle\nalgo similar a lo que veis en la foto, básicamente es el nombre de tu appservice \nseguido de un extra:\n\nappservicename://easyauth.callback\n\n\nEsto es importante, lo que pongamos aqui lo tendremos que poner tambien en\nnuestra aplicación en algún momento, en el caso de Android, lo haremos en el\nmanifest.\n\nSiguiente:\n\nEncontrar el SDK\nBueno esto realmente depende de que queramos hacer y de como tengamos montado el\nentorno en Azure, en mi caso he creado un Mobile AppService, por lo que en\ncondiciones normales deberíamos trabajar con el SDK para ello.\n\nBien pues en este caso deberia ser bastante fácil, la documentación oficial esta\nbastante bien para esto:\nAzure SDK Android\n[https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library]\n\nComo veis al inicio te lo dice, básicamente usa el compile pertinente y un par\nde cosas más y listo.\n\nY por último:\n\nCódigo necesario para el login\nBien seguramente si habeis mirado los links que he puesto más arriba habréis\nvisto que casi todo el código que necesitamos ya estaba, concretamente en este \nAzure SDK Android\n[https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library]\n\nCreamos una conexión de cliente en el onCreate:\n\nMobileServiceClient mClient = new MobileServiceClient(\n    \"<MobileAppUrl>\",       // Replace with the Site URL\n    this);                  // Your application Context\n\n\nPor si no lo tenéis claro MobileAppUrl es la url de vuestro APPService algo\nsimilar a:\n\nhttps://nombreDeApp.azurewebsites.net\n\n\nEl resto es como viene en la documentación, pero en nuestro caso como provider \nde login de backend ponemos aad o podemos usar:\n\nMobileServiceAuthenticationProvider.WindowsAzureActiveDirectory\n\n\nUn par de detalles muy importantes:\n\n * siempre que en la documentación pone algo de url_scheme se refiere a la url\n   de nuestra app o al menos al nombre.\n * Tenemos que tener esto en el manifest.xml (con la URL de nuestra app)\n\n<activity android:name=\"com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity\">\n    <intent-filter>\n        <action android:name=\"android.intent.action.VIEW\" />\n        <category android:name=\"android.intent.category.DEFAULT\" />\n        <category android:name=\"android.intent.category.BROWSABLE\" />\n        <data android:scheme=\"nombreDeApp\" android:host=\"easyauth.callback\"/>\n    </intent-filter>\n</activity>\n\n\nOJO con ese easyauth.callback es el que permitimos más arriba en las\nredirecciones y sin el nada funciona.\n\nComo tal solo he remarcado las partes que me han parecido más importantes, la\ngran mayoria de las cosas funcionan bien siguiendo la información que aparece en\nlos links que os he comentado más arriba.\n\nEn otro post comentare como obtener datos del usuario que ha realizado el login,\nya que a simple vista no es muy intuitivo, hasta la próximaaaaaa.","html":"<!--kg-card-begin: markdown--><p>Estreno otra sección, en este caso estará centrado en problemas que me he ido encontrado con los servicios <strong>Cloud</strong> a la hora de desarrollar alguna aplicación nativa para Android o IOS.<br>\nEn este caso le toca el turno a Azure, por ciertas necesidades he tenido que &quot;pegarme&quot; con el servicio para que me funcionara el Login con el servicio de Azure Active Directory.<br>\nVuelve a ser por el problema de la documentación existente, que creo que es el único problema con los servicios Cloud, que la documentación o no esta clara o no esta actualizada.</p>\n<p>Este escenario es muy simple, queremos hacer login, con una app Android, usando usuarios pertenecientes a Azure Active Directory, en un principio debería ser bastante fácil pero por lo menos en mi caso he tenido algún que otro problema.</p>\n<p>Primero de todo:</p>\n<h2 id=\"configurarelappserviceparaellogin\">Configurar el AppService para el login</h2>\n<p>Teóricamente bastante sencillo, vamos a la doc oficial:<br>\n<a href=\"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-how-to-configure-active-directory-authentication\">Configure AAD in APPService</a></p>\n<p>Y la seguimos, como tal hacemos todo y pensamos que todo esta bien, pero a la hora de probarlo falta alguna cosilla, que os voy adelantando por aqui:</p>\n<p><img src=\"https://jlgarcia.fulldev.ninja/assets/images/2017/07/Azure.png\" alt=\"\"></p>\n<p>Como véis en la foto en las redirecciones URL permitidas necesitamos añadirle algo similar a lo que veis en la foto, básicamente es el nombre de tu <strong>appservice</strong> seguido de un extra:</p>\n<pre><code>appservicename://easyauth.callback\n</code></pre>\n<p>Esto es importante, lo que pongamos aqui lo tendremos que poner tambien en nuestra aplicación en algún momento, en el caso de Android, lo haremos en el manifest.</p>\n<p>Siguiente:</p>\n<h2 id=\"encontrarelsdk\">Encontrar el SDK</h2>\n<p>Bueno esto realmente depende de que queramos hacer y de como tengamos montado el entorno en Azure, en mi caso he creado un Mobile AppService, por lo que en condiciones normales deberíamos trabajar con el SDK para ello.</p>\n<p>Bien pues en este caso deberia ser bastante fácil, la documentación oficial esta bastante bien para esto:<br>\n<a href=\"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library\">Azure SDK Android</a></p>\n<p>Como veis al inicio te lo dice, básicamente usa el compile pertinente y un par de cosas más y listo.</p>\n<p>Y por último:</p>\n<h2 id=\"cdigonecesarioparaellogin\">Código necesario para el login</h2>\n<p>Bien seguramente si habeis mirado los links que he puesto más arriba habréis visto que casi todo el código que necesitamos ya estaba, concretamente en este <a href=\"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library\">Azure SDK Android</a></p>\n<p>Creamos una conexión de cliente en el onCreate:</p>\n<pre><code>MobileServiceClient mClient = new MobileServiceClient(\n    &quot;&lt;MobileAppUrl&gt;&quot;,       // Replace with the Site URL\n    this);                  // Your application Context\n</code></pre>\n<p>Por si no lo tenéis claro <strong>MobileAppUrl</strong> es la url de vuestro APPService algo similar a:</p>\n<pre><code>https://nombreDeApp.azurewebsites.net\n</code></pre>\n<p>El resto es como viene en la documentación, pero en nuestro caso como <strong>provider</strong> de login de backend ponemos <strong>aad</strong> o podemos usar:</p>\n<pre><code>MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory\n</code></pre>\n<p><span style=\"color:red\">Un par de detalles muy importantes</span>:</p>\n<ul>\n<li>siempre que en la documentación pone algo de <strong>url_scheme</strong> se refiere a la url de nuestra app o al menos al nombre.</li>\n<li>Tenemos que tener esto en el <strong>manifest.xml</strong> (con la URL de nuestra app)</li>\n</ul>\n<pre><code>&lt;activity android:name=&quot;com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity&quot;&gt;\n    &lt;intent-filter&gt;\n        &lt;action android:name=&quot;android.intent.action.VIEW&quot; /&gt;\n        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;\n        &lt;category android:name=&quot;android.intent.category.BROWSABLE&quot; /&gt;\n        &lt;data android:scheme=&quot;nombreDeApp&quot; android:host=&quot;easyauth.callback&quot;/&gt;\n    &lt;/intent-filter&gt;\n&lt;/activity&gt;\n</code></pre>\n<p><strong>OJO con ese easyauth.callback</strong> es el que permitimos más arriba en las redirecciones y sin el nada funciona.</p>\n<p>Como tal solo he remarcado las partes que me han parecido más importantes, la gran mayoria de las cosas funcionan bien siguiendo la información que aparece en los links que os he comentado más arriba.</p>\n<p>En otro post comentare como obtener datos del usuario que ha realizado el login, ya que a simple vista no es muy intuitivo, hasta la próximaaaaaa.</p>\n<!--kg-card-end: markdown-->","url":"https://jlgarcia.fulldev.ninja/cloud-adventures-android-y-azure-active-directory-login/","canonical_url":null,"uuid":"2cf0a3ce-fac7-446d-9762-6ce5740def4e","codeinjection_foot":null,"codeinjection_head":null,"codeinjection_styles":null,"comment_id":"31","reading_time":3,"send_email_when_published":false,"email_subject":null,"childHtmlRehype":{"html":"<!--kg-card-begin: markdown--><p>Estreno otra sección, en este caso estará centrado en problemas que me he ido encontrado con los servicios <strong>Cloud</strong> a la hora de desarrollar alguna aplicación nativa para Android o IOS.<br>\nEn este caso le toca el turno a Azure, por ciertas necesidades he tenido que \"pegarme\" con el servicio para que me funcionara el Login con el servicio de Azure Active Directory.<br>\nVuelve a ser por el problema de la documentación existente, que creo que es el único problema con los servicios Cloud, que la documentación o no esta clara o no esta actualizada.</p>\n<p>Este escenario es muy simple, queremos hacer login, con una app Android, usando usuarios pertenecientes a Azure Active Directory, en un principio debería ser bastante fácil pero por lo menos en mi caso he tenido algún que otro problema.</p>\n<p>Primero de todo:</p>\n<h2 id=\"configurarelappserviceparaellogin\">Configurar el AppService para el login</h2>\n<p>Teóricamente bastante sencillo, vamos a la doc oficial:<br>\n<a href=\"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-how-to-configure-active-directory-authentication\">Configure AAD in APPService</a></p>\n<p>Y la seguimos, como tal hacemos todo y pensamos que todo esta bien, pero a la hora de probarlo falta alguna cosilla, que os voy adelantando por aqui:</p>\n<p><img src=\"https://jlgarcia.fulldev.ninja/assets/images/2017/07/Azure.png\" alt=\"\"></p>\n<p>Como véis en la foto en las redirecciones URL permitidas necesitamos añadirle algo similar a lo que veis en la foto, básicamente es el nombre de tu <strong>appservice</strong> seguido de un extra:</p>\n<div class=\"kg-card kg-code-card gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">appservicename://easyauth.callback\n</code></pre></div>\n<p>Esto es importante, lo que pongamos aqui lo tendremos que poner tambien en nuestra aplicación en algún momento, en el caso de Android, lo haremos en el manifest.</p>\n<p>Siguiente:</p>\n<h2 id=\"encontrarelsdk\">Encontrar el SDK</h2>\n<p>Bueno esto realmente depende de que queramos hacer y de como tengamos montado el entorno en Azure, en mi caso he creado un Mobile AppService, por lo que en condiciones normales deberíamos trabajar con el SDK para ello.</p>\n<p>Bien pues en este caso deberia ser bastante fácil, la documentación oficial esta bastante bien para esto:<br>\n<a href=\"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library\">Azure SDK Android</a></p>\n<p>Como veis al inicio te lo dice, básicamente usa el compile pertinente y un par de cosas más y listo.</p>\n<p>Y por último:</p>\n<h2 id=\"cdigonecesarioparaellogin\">Código necesario para el login</h2>\n<p>Bien seguramente si habeis mirado los links que he puesto más arriba habréis visto que casi todo el código que necesitamos ya estaba, concretamente en este <a href=\"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library\">Azure SDK Android</a></p>\n<p>Creamos una conexión de cliente en el onCreate:</p>\n<div class=\"kg-card kg-code-card gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">MobileServiceClient mClient = new MobileServiceClient(\n    \"&#x3C;MobileAppUrl>\",       // Replace with the Site URL\n    this);                  // Your application Context\n</code></pre></div>\n<p>Por si no lo tenéis claro <strong>MobileAppUrl</strong> es la url de vuestro APPService algo similar a:</p>\n<div class=\"kg-card kg-code-card gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">https://nombreDeApp.azurewebsites.net\n</code></pre></div>\n<p>El resto es como viene en la documentación, pero en nuestro caso como <strong>provider</strong> de login de backend ponemos <strong>aad</strong> o podemos usar:</p>\n<div class=\"kg-card kg-code-card gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory\n</code></pre></div>\n<p><span style=\"color:red\">Un par de detalles muy importantes</span>:</p>\n<ul>\n<li>siempre que en la documentación pone algo de <strong>url_scheme</strong> se refiere a la url de nuestra app o al menos al nombre.</li>\n<li>Tenemos que tener esto en el <strong>manifest.xml</strong> (con la URL de nuestra app)</li>\n</ul>\n<div class=\"kg-card kg-code-card gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">&#x3C;activity android:name=\"com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity\">\n    &#x3C;intent-filter>\n        &#x3C;action android:name=\"android.intent.action.VIEW\" />\n        &#x3C;category android:name=\"android.intent.category.DEFAULT\" />\n        &#x3C;category android:name=\"android.intent.category.BROWSABLE\" />\n        &#x3C;data android:scheme=\"nombreDeApp\" android:host=\"easyauth.callback\"/>\n    &#x3C;/intent-filter>\n&#x3C;/activity>\n</code></pre></div>\n<p><strong>OJO con ese easyauth.callback</strong> es el que permitimos más arriba en las redirecciones y sin el nada funciona.</p>\n<p>Como tal solo he remarcado las partes que me han parecido más importantes, la gran mayoria de las cosas funcionan bien siguiendo la información que aparece en los links que os he comentado más arriba.</p>\n<p>En otro post comentare como obtener datos del usuario que ha realizado el login, ya que a simple vista no es muy intuitivo, hasta la próximaaaaaa.</p>\n<!--kg-card-end: markdown-->","htmlAst":{"type":"root","children":[{"type":"comment","value":"kg-card-begin: markdown"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Estreno otra sección, en este caso estará centrado en problemas que me he ido encontrado con los servicios "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Cloud"}]},{"type":"text","value":" a la hora de desarrollar alguna aplicación nativa para Android o IOS."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nEn este caso le toca el turno a Azure, por ciertas necesidades he tenido que \"pegarme\" con el servicio para que me funcionara el Login con el servicio de Azure Active Directory."},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\nVuelve a ser por el problema de la documentación existente, que creo que es el único problema con los servicios Cloud, que la documentación o no esta clara o no esta actualizada."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Este escenario es muy simple, queremos hacer login, con una app Android, usando usuarios pertenecientes a Azure Active Directory, en un principio debería ser bastante fácil pero por lo menos en mi caso he tenido algún que otro problema."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Primero de todo:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"configurarelappserviceparaellogin"},"children":[{"type":"text","value":"Configurar el AppService para el login"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teóricamente bastante sencillo, vamos a la doc oficial:"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"a","properties":{"href":"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-how-to-configure-active-directory-authentication"},"children":[{"type":"text","value":"Configure AAD in APPService"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Y la seguimos, como tal hacemos todo y pensamos que todo esta bien, pero a la hora de probarlo falta alguna cosilla, que os voy adelantando por aqui:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"img","properties":{"src":"https://jlgarcia.fulldev.ninja/assets/images/2017/07/Azure.png","alt":""},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Como véis en la foto en las redirecciones URL permitidas necesitamos añadirle algo similar a lo que veis en la foto, básicamente es el nombre de tu "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"appservice"}]},{"type":"text","value":" seguido de un extra:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["kg-card","kg-code-card","gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"appservicename://easyauth.callback\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esto es importante, lo que pongamos aqui lo tendremos que poner tambien en nuestra aplicación en algún momento, en el caso de Android, lo haremos en el manifest."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siguiente:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"encontrarelsdk"},"children":[{"type":"text","value":"Encontrar el SDK"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bueno esto realmente depende de que queramos hacer y de como tengamos montado el entorno en Azure, en mi caso he creado un Mobile AppService, por lo que en condiciones normales deberíamos trabajar con el SDK para ello."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bien pues en este caso deberia ser bastante fácil, la documentación oficial esta bastante bien para esto:"},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"a","properties":{"href":"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library"},"children":[{"type":"text","value":"Azure SDK Android"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Como veis al inicio te lo dice, básicamente usa el compile pertinente y un par de cosas más y listo."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Y por último:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"cdigonecesarioparaellogin"},"children":[{"type":"text","value":"Código necesario para el login"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bien seguramente si habeis mirado los links que he puesto más arriba habréis visto que casi todo el código que necesitamos ya estaba, concretamente en este "},{"type":"element","tagName":"a","properties":{"href":"https://docs.microsoft.com/es-es/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library"},"children":[{"type":"text","value":"Azure SDK Android"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Creamos una conexión de cliente en el onCreate:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["kg-card","kg-code-card","gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MobileServiceClient mClient = new MobileServiceClient(\n    \"<MobileAppUrl>\",       // Replace with the Site URL\n    this);                  // Your application Context\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Por si no lo tenéis claro "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"MobileAppUrl"}]},{"type":"text","value":" es la url de vuestro APPService algo similar a:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["kg-card","kg-code-card","gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"https://nombreDeApp.azurewebsites.net\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"El resto es como viene en la documentación, pero en nuestro caso como "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"provider"}]},{"type":"text","value":" de login de backend ponemos "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aad"}]},{"type":"text","value":" o podemos usar:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["kg-card","kg-code-card","gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"style":"color:red"},"children":[{"type":"text","value":"Un par de detalles muy importantes"}]},{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"siempre que en la documentación pone algo de "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"url_scheme"}]},{"type":"text","value":" se refiere a la url de nuestra app o al menos al nombre."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tenemos que tener esto en el "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"manifest.xml"}]},{"type":"text","value":" (con la URL de nuestra app)"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["kg-card","kg-code-card","gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<activity android:name=\"com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity\">\n    <intent-filter>\n        <action android:name=\"android.intent.action.VIEW\" />\n        <category android:name=\"android.intent.category.DEFAULT\" />\n        <category android:name=\"android.intent.category.BROWSABLE\" />\n        <data android:scheme=\"nombreDeApp\" android:host=\"easyauth.callback\"/>\n    </intent-filter>\n</activity>\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"OJO con ese easyauth.callback"}]},{"type":"text","value":" es el que permitimos más arriba en las redirecciones y sin el nada funciona."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Como tal solo he remarcado las partes que me han parecido más importantes, la gran mayoria de las cosas funcionan bien siguiendo la información que aparece en los links que os he comentado más arriba."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"En otro post comentare como obtener datos del usuario que ha realizado el login, ya que a simple vista no es muy intuitivo, hasta la próximaaaaaa."}]},{"type":"text","value":"\n"},{"type":"comment","value":"kg-card-end: markdown"}],"data":{"quirksMode":false}},"tableOfContents":[{"id":"configurarelappserviceparaellogin","heading":"Configurar el AppService para el login"},{"id":"encontrarelsdk","heading":"Encontrar el SDK"},{"id":"cdigonecesarioparaellogin","heading":"Código necesario para el login"}]},"featureImageSharp":{"base":"cloud-ninjaaz.png","publicURL":"/static/258a34bdac22a1c7f123fe43c9931f62/cloud-ninjaaz.png","imageMeta":{"width":777,"height":471},"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoz3WT709bdRTG79+xmJnoiy3ZBoPS3l7ae29v6XBBoKQd2yAbE6TCBpXCghQWMIE5u4RCA52oiMYyfAFEfiglFJK98U0zYZOElUWgCSiS6HzFCwmBj7eX+dKTnHxzck6e5znnfI/gUB04FEV3FYcscxLLr105iR0OFFWj6JKD0K1sytxuKm/5KCxyY7WpaJqGatRpCKrmQil8F7nIi91dieq8hFx6Hbm4HLnkGqrDiaYD2lQXtSUm4iEPr7ZW4J9d/txIEvBVkJ9vx+l0GqCCrINItZ3Yy2vJv9mCfKUaa8NDrLfvY6tqQVMVCpwakk2hyCXze8zLb4Mmfg1nsxvNIf11GQWqHbusK80otL7jQXJXIXp92IqvYSmtwnL5KmLJDcSy95BkF5JdM1qenZkmY+3N9ZjPv82dmkoODw8Ze/wYm10+abmuTORhVRbB6yZdgUJvdTaf3LxI4EoeLVctDDfkEvSepbu72wA7Pj7mr1d/s7CQYPePPf6zYDCIxSIifHH7IqEaMzF/FhFfDhPN5/n+7mtvOceTe+cYb3yL7vYm/s+Ojo6oq6tHkvIRSgvtfOjJ5Y5HpMEr0lRu4UaxxPtuK/UeK3XuPHxuizHDjo4OhoaGiEQi9PX10d8fYWBgEJ/vA0TRqm/bifDt6Bg/JZ9hlhTiiScEWu/x6PMRPvvyG5rutvNycxvX5VIDaHR0lNOn36Srq4u5uTkuXMjC5XLx/PkvtLW1YTZbEBYTCUN2dHCAl+vrhHt7mZ+Ps5hY4H5Pj5H78YdZZmZmWV5e5syZs8RiMfb29sjJySUcDhs1icSioVJI6ICpVIp0Os3BwYHO/jHT09O6zxAKhdjZ2WFtbY39/X3i8XlOnXpDb7efzc1NQ9Hq6qq+oAW2t7epqKhEWFl5xvj4ONHoI4Ops7OLDEmmKBqN8uJFikCg2cgtLS3h9/vZ2Njg6dOfjUVkLJVaN96xse8QRkZG6NXbVPTTSyaTNDb6jaFnBt7a+hGTk5OYTHmG4gzB8PBXbG2lqa6u0b9SDxMTE/qVFPDgwadMTU3xL8OMWyEgcl/LAAAAAElFTkSuQmCC","aspectRatio":1.650943396226415,"src":"/static/258a34bdac22a1c7f123fe43c9931f62/60290/cloud-ninjaaz.png","srcSet":"/static/258a34bdac22a1c7f123fe43c9931f62/847ef/cloud-ninjaaz.png 175w,\n/static/258a34bdac22a1c7f123fe43c9931f62/91cba/cloud-ninjaaz.png 350w,\n/static/258a34bdac22a1c7f123fe43c9931f62/60290/cloud-ninjaaz.png 700w,\n/static/258a34bdac22a1c7f123fe43c9931f62/d1e92/cloud-ninjaaz.png 777w","srcWebp":"/static/258a34bdac22a1c7f123fe43c9931f62/89afa/cloud-ninjaaz.webp","srcSetWebp":"/static/258a34bdac22a1c7f123fe43c9931f62/9fca7/cloud-ninjaaz.webp 175w,\n/static/258a34bdac22a1c7f123fe43c9931f62/37a4e/cloud-ninjaaz.webp 350w,\n/static/258a34bdac22a1c7f123fe43c9931f62/89afa/cloud-ninjaaz.webp 700w,\n/static/258a34bdac22a1c7f123fe43c9931f62/60436/cloud-ninjaaz.webp 777w","sizes":"(max-width: 700px) 100vw, 700px"}}}}}]}},"pageContext":{"pageNumber":0,"limit":3,"skip":0,"totalPosts":1,"numberOfPages":1,"humanPageNumber":1,"prevPageNumber":null,"nextPageNumber":null,"previousPagePath":null,"nextPagePath":null,"slug":"azure","collectionPaths":{},"iScrollEnabled":true,"postIds":["Ghost__Post__5a338158333e0f134c248f13"],"cursor":0}},
    "staticQueryHashes": ["1272700106","1676991999","2138873178","2546165603","2681841279","2938721187","293880488","3052966952","4156497161"]}