El día de hoy veremos los pasos necesarios cómo redirigirla a nuestra Power Apps para crear una forma de autoservicio para registro de invitados externos.
Lo que haremos será crear un Microsoft Form para capturar la dirección de correo externo del usuario, tras lo cual crearemos la app de registro para poder crear una llamada de invitación en Microsoft Graph. Seguido de esto usaremos Power Automate mediante el API de invitación de Microsoft Graph para añadir este correo electrónico como un usuario externo al inquilino. Luego de esto vamos a añadir el usuario a un grupo que esté compartido con la app y redigiremos esto de vuelta a la Power App (o bien a Teams o al sitio extranet de SharePoint).
Ahora veámoslo paso a paso.
CREAR MICROSOFT FORM
Aquí vamos a cambiar el ajuste para permitir que anónimo – cualquiera pueda acceder a esto si van a la URL compartida de la forma pública.
CREAR APP DE REGISTRO EN AZURE AD PORTAL
Iremos al portal de Azure AD y seleccionaremos «App registration». El nombre para esta app deberá ser similar al de nuestra Power App; no hace falta que sea el mismo, pero así será menos confuso para nuestros administradores inquilinos cuando estén revisando las apps registradas en Azure Portal.
Dado que este registro de app es solo usado para nuestro inquilino puede ser «Single Tenant».
Ahora vamos a agregar «Application Permission» para ‘User.Invite.All’. Este es un permiso requerido por el consentimiento del administrador inquilino, por lo que se lo daremos aquí o en su defecto preguntaremos al administrador inquilino que nos lo dé.
Primero, entraremos a la sección Add a permission:
Luego, seleccionaremos Microsoft Graph para poder dar los permisos necesarios.
Y por ultimo, seleccionaremos el permiso de User.Invite.All con la opción Application permissions.
Necesitaremos generar un Client Secret, el cual vamos a guardar.
También necesitaremos copiar el Client ID y el Directory ID (tenant ID).
POWER APP
Aquí hemos creado rápidamente una Power App, la etiqueta de texto nos muestra la dirección de correo del usuario actual. Para el usuario externo esto mostraría el correo externo.
Para poder compartir he puesto esta Power App como compartida con Cualquiera.
Ahora necesitamos copiar el link Web con el tenant ID.
POWER AUTOMATE
Ahora necesitamos un flujo que contenga en un Compose la combinacion de la URL de la app.
Lo correremos en la forma de Microsoft Form y necesitaremos esta URL de redirección. Cuando la invitación de invitado externo esté completa, nos redirigirá a nuestra Power App. El HTTP usado lo puedes revisar haciendo click aquí.
El texto dentro de la graphAPI queda como sigue:
{ "invitedUserDisplayName":"@{outputs('Get_response_details')?['body/r68d2b3adac224e96b2b37fdd55d8066a']}", "invitedUserEmailAddress":"@{outputs('Get_response_details')?['body/r2c1edbf7bddc425d858b82fbfb4f0991']}", "sendInvitationMessage":true, "inviteRedirectUrl":"@{outputs('Compose')}" }
Dado que registramos una «Application Permission» podemos usar la acción HTTP para llamar a Microsoft Graph sin delegar permisos.
Introduciremos los siguientes valores que ya deberemos tener para este punto: Tenant, Audience, Client ID y Client Secret.
El mensaje JSON para enviar a Microsoft Graph deberá tener la URL de redirección de vuelta a la Power App.
Si hemos hecho todo bien deberemos obtener un Object ID de usuario, el cual deberemos añadir al grupo que necesitemos. En este ejemplo dado que mi Power App es compartida con cualquiera, el usuario invitado externo tendrá acceso a ella sin ser un miembro del grupo.
RESULTADO
Para finalizar, cambiaremos a un inquilino externo, llenaremos la forma y veremos el flujo activarse y crear una invitación desde mi inquilino para el inquilino invitado. El correo del invitado será añadido como usuario invitado en mi inquilino.
En el correo del invitado Microsoft Azure AD mandará un correo de invitación B2B. Notaremos cómo la URL de redirección es la Power App a la cual seremos redirigidos al final del proceso de invitación de usuario.
Luego de ser redirigidos exitosamente se cargará la Power App y como podemos ver, estoy usándola como un usuario externo con dirección de correo externa. Si el usuario externo da click para aceptar en el correo de nuevo se saltarán el proceso de revisión del permiso y serán redirigidos por Azure AD hacia la Power App directamente.
VARIACIONES Y EXTRAS
- El mecanismo de activación no tiene que ser Microsoft Forms. En realidad puede ser un activador HTTP Request que acepte una dirección de correo electrónico. En un escenario donde he creado un inquilino hijo a un inquilino padre algo de javascript en el inquilino hijo enviará una petición POST al flujo para iniciar la invitación.
- El correo electrónico no tiene por qué ser enviado directamente. La invitación API regresa una URL de canje, la cual puede ser regresada por el Flow en un HTTP Response a un llamado javascript y el usuario puede ser redirigido a esa URL de canje directamente sin tener que pasar por el correo electrónico.
- También podemos capturar la URL de canje y crear nuestra propia plantilla de correo electrónico.
- No necesitamos redirigir a Power App. Podemos ser redirigidos directamente a un extranet de SharePoint que ahora incluya el nuevo usuario invitado o bien a Teams añadiendo el usuario invitado dentro de la membresía del grupo.
Cualquier duda, nos leemos abajo.