Post

Registro de aplicaciones en Entra ID

Índice

Introducción

El Registro de Aplicaciones en Entra ID es un proceso esencial que permite a los desarrolladores integrar sus aplicaciones con los servicios de autenticación y autorización de Microsoft. Al registrar una aplicación, se crea una identidad única en Entra ID, lo que facilita la autenticación segura y el acceso a los recursos necesarios. Este proceso implica configurar permisos y asignar roles para que la aplicación interactúe correctamente con otros servicios y APIs, garantizando así un entorno seguro y controlado.

Requisitos

Requisitos previos

  • Una cuenta de Azure que tenga una suscripción activa.
  • La cuenta de Azure debe ser al menos de un administrador de aplicaciones en la nube.
  • Finalización del inicio rápido configuración de un inquilino.

Operativa

Comenzamos accediendo al panel de administración de Entra ID, anteriormente llamado Azure AD.

Nos dirigimos a Identity y seleccionamos App Registrations

Overview

Step1

Le damos a New registration.

  • Indicamos un nombre para la aplicación (Campo obligatorio).
  • Tipo de cuentas compatibles (Lo dejamos por defecto).
  • Uri de respuesta (Lo dejamos por defecto).

En tipo de cuentas compatibles, tenemos 4 tipos, que son los siguientes:

Tipos de cuenta admitidosDescripción
Solo las cuentas de este directorio organizativoSeleccione esta opción si va a desarrollar una aplicación para que la utilicen usuarios (o invitados) de su inquilino. A menudo denominada aplicación de línea de negocio, se trata de una aplicación de un solo inquilino en la plataforma de identidad de Microsoft.
Cuentas en cualquier directorio organizativoSeleccione esta opción si desea que los usuarios de cualquier inquilino de Azure Active Directory (Azure AD) pueda usar la aplicación. Esta opción es adecuada si, por ejemplo, va a desarrollar una aplicación de software como servicio (SaaS) que desea proporcionar a varias organizaciones. Este tipo de aplicación se denomina multiinquilino en la plataforma de identidad de Microsoft.
Cuentas en cualquier directorio organizativo y cuentas Microsoft personalesSeleccione esta opción para establecer como destino el mayor conjunto posible de clientes. Al seleccionar esta opción, estará registrando una aplicación multiinquilino que también admite usuarios con cuentas personales de Microsoft. Las cuentas personales de Microsoft abarcan las cuentas de Skype, Xbox, Live y Hotmail.
Cuentas personales de MicrosoftSeleccione esta opción si va a crear una aplicación solo para usuarios con cuentas personales de Microsoft. Las cuentas personales de Microsoft abarcan las cuentas de Skype, Xbox, Live y Hotmail.

Una vez le damos a crear ya tenemos los siguientes datos.

  • ClientID, es el ID de aplicación el AppID.
  • ObjectID, es el ID de objeto dentro de Azure.
  • TenantID: es el ID de nuestro directorio

Step2

Autenticacíon

Dentro de la pestaña authentication, podemos agregar las URL, normalmente son de tipo web/MPA

  • SPA, son arquitecturas en el que el servidor únicamente dispone de una página y carga todos los estilos y todos los formatos en el cliente y este a partir de ese momento únicamente pide datos al servidor y va mostrando diferentes componentes al usuario que existen en la mega página. Pero nunca navega entre páginas.
  • MPA, Arquitecturas Web Clásicas en donde uno dispone de múltiples páginas HTML y cada una carga diferentes contenidos apoyándose en la navegación contra el servidor

La URL de obligatorio normalmente cuando hacemos integraciones con aplicaciones SaaS, para integrar en Login con microsoft.

Step3

Certificados y secretos

Para conectarnos a la aplicación podemos hacerlo utilizando credenciales propias de la aplicación.

  • Certificados, son creados en nuestro equipo, y se cargan aquí, solo se puede conectar desde el host, que tiene el certificado instalado.
  • Secreto, en una key que se genera desde el panel, que permite conectarse desde cualquier estación.

Vamos a crear un secreto para luego podernos conectar.

Step4

Una vez creado nos devuelve el valor, este se debe anotar de inmediato, una vez cambiamos de pestaña, ya no lo podemos visualizar.

Step5

Permisos

Vamos a agregar 3 permisos básicos, para la prueba.

  • openid
  • email
  • profile

Esos 3 permisos son equivalentes al permisos User.Read

Debemos tener en cuenta dos terminos al agregar permisos:

  • Delegated Permissions, estos permisos son los que se asignan cuando autenticamos como usuario, por ejemplo el login al panel de sharepoint.
  • Applications Permissions, estos permisos se cogen cuando autenticas como aplicación desde consola, por ejemplo para hacer consultas con powershell.

En nuestro caso, los agregaremos delegados, ya que nos conectaremos con powershell.

Step6

Una vez se agregan se verá de la siguiente forma.

Step7

Listo, ya tenemos una aplicación básica creada, con la que podríamos autenticar usando linea de comandos, o integrandola con un aplicativo, como por ejemplo, jenkins, portainer, etc.

Conexión con PowerShell

Vamos a conectarnos con powershell, para comprobar esto. Necesitamos instalar el plugin de autenticación.

1
Install-Module Microsoft.Graph.Authentication -Scope CurrentUser

Una vez instalado, vamos a generar el token para conectarnos como aplicación. Para ello creamos la siguiente función.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
function Get-MgTokenApp {
  
    <#
        .SYNOPSIS
        Get Graph ApiToken token to connect with Graph 

        .DESCRIPTION
        Get custom Graph Token from API, like aplication. 

        .EXAMPLE
        Get-MgTokenApp

        Generate token with variables from PSData. 

        .EXAMPLE
        Get-MgTokenApp -TenantID $TenantID -ClientID $ClientID -ClientSecret $ClientSecret 

        Generate token with data pass from parameters.
    #>
  
    [CmdletBinding()]
    [alias("ntapp")]
    param(
        [Parameter(
            Mandatory = $True,
            HelpMessage = "Tenant ID of Azure AD tenant"
        )][string] $TenantID,
        [Parameter(
            Mandatory = $True,
            HelpMessage = "Client ID of azure APP"
        )][string] $ClientID,
        [Parameter(
            Mandatory = $True,
            HelpMessage = "Client secret of Azure APP"
        )][string] $ClientSecret

    )
    
    begin {
        
        $Params = @{
            "Uri"    = "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token"
            "Method" = "POST"
            "Body"   = @{
                'Grant_Type'    = "client_credentials"
                'Scope'         = "https://graph.microsoft.com/.default"
                'Client_Id'     = $ClientID
                'Client_Secret' = $ClientSecret
            }
        }
    }
    
    process {

        try {
 
            $AccessToken = (Invoke-RestMethod @params).access_token
            
        }
        catch {
            Throw $_ ;
        }
        
    }
    
    end {
        Return $AccessToken 
    }
}

Creamos el token:

  • TenantID, en la pestaña de overwiev
  • ClientID, en la pestaña de overwiev
  • ClientSecret, en la pestaña de certificados y secretos
1
$AccesToken = Get-MgTokenApp -TenantID $TenantID -ClientID $ClientID -ClientSecret $ClientSecret 

Nos conectamos.

1
Connect-MGGraph -AccessToken (ConvertTo-SecureString $AccesToken -AsPlainText -Force)

Una vez conectados, ejecutamos el siguiente comando, y nos deberá aparecer la aplicacíon que nosotros hemos creado.

1
2
3
4
Get-MGContext  | Select -Exp AppName

# OutPut: 
#    josecg.com
This post is licensed under CC BY 4.0 by the author.