Microsoft Entra ID (ex Azure AD) admite la autenticación basada en certificados (CBA). Esto significa que puede usar la autenticación de certificado para ejecutar automáticamente sus scripts de PowerShell sin ingresar contraseña y sin usar Azure MFA. Con la autenticación basada en certificados, ya no tendrá que preocuparse por almacenar contraseñas de forma segura en scripts de PowerShell o utilizar almacenamiento en bóveda de terceros a través del módulo SecretManagement.
A continuación se explica cómo utilizar certificados para la autenticación desde sus scripts de PowerShell contra Microsoft Entra ID (Azure AD) y Exchange Online.
Primero debe crear un certificado e instalarlo en su computadora. Puede obtener un certificado de su CA o emitir un certificado autofirmado. En este ejemplo, crearemos un certificado autofirmado mediante el cmdlet New-SelfSignedCertificate.
Genera un certificado autofirmado con un período de validez de 3 años:
$certvalid = (Get-Date).AddYears(3)
$newcert = New-SelfSignedCertificate -DnsName "pre_prod.woshub.com" -CertStoreLocation "cert:LocalMachineMy" -NotAfter $certvalid -KeySpec KeyExchange -FriendlyName "Azure Microsoft Entra ID PowerShell Auth cert"
$newcert|fl Subject,Thumbprint,NotBefore,NotAfter
Copie el valor de la huella digital del certificado.

Luego exporte el certificado a los archivos CER y PFX:
$newcert | Export-Certificate -FilePath "C:PSazure-auth.cer"
$newcert | Export-PfxCertificate -FilePath "C:PSazure-auth.pfx" -Password $(ConvertTo-SecureString -String "S3dPswrd@123" -AsPlainText -Force)
Ahora necesitas crear una aplicación en Azure Microsoft Entra:
- Inicie sesión en Azure Portal y vaya a Microsoft Entra ID -> Registros de aplicaciones ->Nuevo registro;
- Especifique el nombre de la aplicación (
testCertAuthPowerShell), seleccionarCuentas en este directorio organizacional únicamente (inquilino único)y haga clicRegistro; - Copia elAplicación (ID de cliente)valor;


- Luego asigne permisos para su aplicación. Ir aPermisos API -> Agregar un permiso. En este ejemplo, otorgaremos permisos para administrar la configuración de Exchange Online (API que utiliza mi organización ->Office 365 Intercambio en línea)Azure -> Permisos de aplicaciones ->Exchange.ManageAsApp -> Agregar permisos -> Otorgar consentimiento de administrador);


- Entonces ve aCertificados y secretosy cargue un archivo de certificado autofirmado desde su computadora;


- A continuación, asigne elAdministrador de intercambiorol en tu aplicación.Ir aAzure Active Directory -> Roles y administradores-> seleccione elAdministrador de intercambiorol -> Agregar asignaciones -> Seleccione su aplicación de la lista (testCertAuthPowerShell).


Una vez hecho esto, puede intentar conectarse a Exchange Online desde un script de PowerShell en su computadora usando el certificado. Tenga en cuenta que en este ejemplo, el módulo Exchange Online PowerShell (EXO) ya está instalado en la computadora.
Necesitará los valores de las siguientes variables (las que copió anteriormente):
$certThumbprint = "9CF05589A4B29BECEE6456F08A76EBC3DC2BC581"
$AzureAppID = "111111-2222-3333-4444-123456789"
$tenant="woshub.onmicrosoft.com"
Ahora puede conectarse al inquilino de Exchange Online mediante el certificado:
Connect-ExchangeOnline -AppId $AzureAppID -CertificateThumbprint $certThumbprint -Organization $tenant


No se le solicitará una contraseña ni un formulario de autenticación moderna cuando se conecte a Microsoft Entra ID.
Enumere los buzones de correo en su inquilino de Exchange:
Get-EXOMailbox
Recuerde agregar un comando para desconectar la sesión de Exchange Online al final de su script de PowerShell:
Disconnect-ExchangeOnline -Confirm:$false
De manera similar, también puede configurar la autenticación basada en certificados para otros servicios de Microsoft 365. Lo importante aquí es asignar correctamente los permisos para su aplicación de Azure.
Por ejemplo, si está utilizando el módulo Teams PowerShell, ejecutaría el siguiente comando para autenticarse con un certificado:
Connect-MicrosoftTeams -CertificateThumbprint $certThumbprint -ApplicationId $AzureAppID -TenantId $tenant


Para usar el módulo Azure AD PowerShell con un certificado para conectarse a Microsoft Entra ID:
Lectura recomendada:Configurar la autenticación moderna híbrida en Exchange local
Connect-AzureAD -TenantId $tenant -ApplicationId $AzureAppID -CertificateThumbprint $certThumbprint
Obtenga más información sobre cómo crear aplicaciones en Azure, asignar permisos y usar la API de Microsoft Graph en PowerShell.
Además, puede importar un certificado a otro host de Windows utilizando un archivo PFX que contiene una clave privada protegida con contraseña. Utilice el complemento Certificados MMC o PowerShell para importar el certificado:
$password = ConvertTo-SecureString -String "S3dPswrd@123" -Force -AsPlainText
Import-PfxCertificate -Password $password -FilePath "C:PSazure-auth.pfx" -CertStoreLocation Cert:CurrentUserMy
Luego puede usar la autenticación basada en certificados de Azure en scripts de PowerShell en esa computadora.














