Configurar la autenticación basada en certificados de Exchange Online – CBA

Tiempo de lectura: 3 minutos

No son pocos los scripts que tenemos que usan nombre de usuario y contraseña para poder conectarse a Exchange Online y poder realizar tareas desatendidas, actualización, informes, etc. Esto implica un riesgo implícito ya que la contraseña se tiene que almacenar localmente, y aunque hay algunas técnicas para poder encriptar las contraseñas, como ConvertFrom-SecureString , éstas no terminan de ser seguras. En este punto es donde la autenticación basada en certificados CBA nos ayudará en nuestro día a día.

¿Cómo funciona la autenticación basada en certificados?

La CBA usa la biblioteca de autenticación de Directorio Activo para obtener un token de validación basado en un Id. de aplicación, un Id. de inquilino y el Thumbprint del certificado que generamos.

Configurar la autenticación basada en certificados para Exchange Online:

1.- Generar un certificado auto firmado:

PS C:\> $mycert = New-SelfSignedCertificate -DnsName "exchange360.com.es" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange -FriendlyName "EXO_CBA_cert"

Una vez creado vamos a tomar el Thumprint ya que lo necesitaremos luego.

PS C:\> $mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter

Subject               Thumbprint                               NotBefore           NotAfter
-------               ----------                               ---------           --------
CN=exchange360.com.es F094122271CE4724314BF95E545C96642F6745A2 03/01/2023 18:13:58 03/01/2024 18:23:59

Ahora exportaremos el certificado en formatos .cer y .pfx para su posterior importación.

PS C:\> $mycert | Export-Certificate -FilePath "C:\temp\EXOCBACert.cer"


    Directorio: C:\temp


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        03/01/2023     18:37            823 EXOCBACert.cer
PS C:\> $mycert | Export-PfxCertificate -FilePath "C:\temp\EXOCBACert.pfx" -Password $(ConvertTo-SecureString -String "PwdEx0C3rt" -AsPlainText -Force)


    Directorio: C:\temp


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        03/01/2023     18:41           2717 EXOCBACert.pfx

2.- Registrar la aplicación en Azure:

Conectarse al portal de Microsoft Azure
Haz clic en Menu \ Azure Active Directory
Selecciona App registration1 \ New registration2

Completamos los siguientes campos:

Name1: nombre descriptivo que le daremos a la aplicación.
Supported account types2: elegiremos la opción de Accounts in this organizational directoy only – Single tenant
Hacemos clic en Register3

Una vez creada la aplicación deberemos copiar y guardar uno de los valores que no servirán posteriormente para establecer la conexión, el Application (client) ID

3.- Configuración de los permisos de la API de la aplicación

Hacemos clic en API permissions1 \ Add a permissions2

Haz clic en APIs my organization uses
Escribe Office 365 en el buscador y entre las opciones que nos muestra selecciona Office 365 Exchange Online

Selecciona Application permissions1
En Select permissions desplegaremos la opción de Exchange2 y seleccionaremos Exchange.ManageAsApp2
Haz clic en Add permissions3

Haz clic en Grant admin consent

Haz clic en Yes

Observamos que el Status ha cambiado a Granted

4.- Cargar el certificado en la aplicación:

Vamos a la opción Certificates & Secrets1
Seleccionamos el área Certificates2
Hacemos clic en Upload certificate3

Iremos a buscar el certificado generado previamente en el punto 1, en este caso EXOCBACert.cer1
Añadimos una breve nota en Desctiption2 al certificado, ejem: EXO CBA Certificado
Hacemos clic en Add3

Ahora el certificado ya aparecerá en la lista de certificado. Para asegurarnos que es el certificado correcto, comprobaremos que el Thumbprint del certificado cargado se corresponde con el del certificado generado en el punto 1.

5.- Asignar el rol de administrador de Exchange Administrator a la aplicación:

Desde la Home del portal de Azure escribimos en el buscador Azure AD Roles and administrators

Escribe exchange1 en el buscador y entre las opciones que os muestra selecciona Exchange Administrator2

Haz clic en Assignments1 \ Add assignments2, escribimos en el buscador el nombre de la aplicación Exo_CBA_Powershell3 y la seleccionamos haciendo clic4 sobre ella.

Hacemos clic en Add

Aquí termina la parte de configuración, a continuación veremos como conectar a Exchange Online usando CBA.

Conectar con Exchange Online mediante CBA:

NOTA.: es indispensable tener instalado el módulo de PowerShell de Exchange Online para poder conectar mediante CBA a Exchange online.

Para conectar necesitaremos los valores que detallábamos en un principio y que hemos ido generando en la configuración, el Id. de aplicación, el Id. de inquilino y el Thumbprint del certificado. Todos ellos lo asignaremos en una variable para proceder a generar la cadena de conexión. $AppId, $IdOrganization y $CertificateThumbPrint.

$AppId = "92855d02-b318-46c0-82b5-cfd975de8a0a"
$CerThumbprint = "F094122271CE4724314BF95E545C96642F6745A2"
$Organization = "exchange360.com.es"

Ahora creamos la cadena de conexión con los valores Id. de aplicación, el Id. de inquilino y el Thumbprint del certificado.

Connect-ExchangeOnline -AppId $AppId -CerThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

Tags from the story
,
0 replies on “Configurar la autenticación basada en certificados de Exchange Online – CBA”