Cuando trabajamos con Azure B2C y necesitamos hacer operaciones como CRUD sobre este directorio, Azure nos provee un API llamado Azure AD Graph API
pero no tenemos acceso para actualizar contraseñas ni para eliminar usuarios, así que en esta guía veremos como habilitar estos permisos.
Prerequisitos
- Tener una cuenta en Azure Portal
- Haber creado y configurado un Azure AD B2C
- Contar con una aplicación en Azure con credenciales para el consumo de
Azure AD Graph API
Azure Portal
Primero iniciaremos sesión en el portal de Azure https://portal.azure.com y buscaremos el Azure AD B2C que previamente tenemos creado.
Necesitaremos tener un usuario local con rol administrador dentro de nuestro Azure AD B2C, el cual usaremos mas adelante desde la consola de PowerShell
y nos servirá para habilitar los permisos que necesitamos.
Una vez dentro de Azure AD B2C vamos a All Users -> New User
, es importante que uses como dominio para el user name el tenant
de tu B2C como por ejemplo [email protected]<your-b2c-tenant>.onmicrosoft.com
.
En Directory Rol vamos a usar Global administrator
, activa la casilla Show Password
copialo y guárdalo en algún lugar porque lo usaremos mas adelante. Por ultimo guarda los cambios y presiona el botón Create
.
Por ultimo antes de irnos del Azure Portal, necesitamos ir a donde tenemos nuestra aplicación registrada. Así que en el buscador de la parte superior escribe App Registrations
esto te listará las aplicaciones que tengas creadas, busca la que usas para consumir el Azure AD Graph API
y copia el Application ID guárdalo en algún lugar porque luego lo vamos a necesitar.
Listo con esto ya podemos ir a una terminal de PowerShell
.
PowerShell
Bueno lamentablemente en este punto requerimos de una maquina Windows, creanme intente de muchas formas instalar PowerShell en OSX / Linux pero sin éxito algo siempre fallo así que lo mejor y mas rápido es usar una maquina Windows en mi caso instale un Windows 10 en una maquina virtual usando VirtualBox.
Ya en Windows buscamos PowerShell
y la ejecutamos en modo administrador.
Una vez allí vamos a instalar un modulo que nos permitirá iniciar sesión en Azure AD B2C, en la consola escribimos
Install-Module MSOnline
Nos saldrá un masaje donde tenemos que confiar en la fuente de donde proviene este paquete, aceptamos y esperamos que termine la instalación.
Ahora debemos iniciar sesión usando la cuenta de administrador que creamos anteriormente. En la consola escribimos
Connect-MsolService
esto nos lanzará un navegador donde ingresaremos el usuario y la contraseña que creamos.
Luego de que el login sea exitoso volveremos a la terminal, allí vamos a ejecutar el siguiente comando
C:\Windows\system32> $sp = Get-MsolServicePrincipal -AppPrincipalId <YOUR_APPLICATION_ID>
donde YOUR_APPLICATION_ID
corresponde al application Id que guardamos anteriormente, recuerda que este id corresponde a la aplicacion que usas para acceder al Azure Graph API
.
C:\Windows\system32> Add-MsolRoleMember -RoleObjectId fe930be7-5e62-47db-91af-98c3a49a38b1 -RoleMemberObjectId $sp.ObjectId -RoleMemberType servicePrincipal
Este ultimo comando se encargará de asignarle permisos de administrador a nuestra aplicación. Como veras el ID fe930be7-5e62-47db-91af-98c3a49a38b1
corresponde al rol de administrador de usuarios para Azure AD B2C.
Listo ahora si usamos uno de los endpoints para actualizar la contraseña o para eliminar usuarios desde Azure Graph API
veras que funciona sin problema.