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
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 admitidos | Descripción |
---|---|
Solo las cuentas de este directorio organizativo | Seleccione 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 organizativo | Seleccione 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 personales | Seleccione 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 Microsoft | Seleccione 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
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.
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.
Una vez creado nos devuelve el valor, este se debe anotar de inmediato, una vez cambiamos de pestaña, ya no lo podemos visualizar.
Permisos
Vamos a agregar 3 permisos básicos, para la prueba.
- openid
- 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.
Una vez se agregan se verá de la siguiente forma.
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