Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Multi-Factor Authentication (MFA) ayuda a proteger el acceso a los datos y las aplicaciones, a la vez que mantiene la simplicidad para los usuarios. Proporciona seguridad adicional al requerir una segunda forma de autenticación y ofrece una autenticación segura a través de una variedad de métodos de autenticación fáciles de usar. Los usuarios pueden o no ser impugnados para Multi-Factor Authentication en función de las decisiones de configuración que toma un administrador.
Modelo de aplicaciones seguras
El requisito de Multi-Factor Authentication puede complicar cualquier automatización que haya desarrollado porque se debe proporcionar una segunda forma de autenticación al autenticarse. Para contenido con este requisito, el modelo de aplicación segura se desarrolló para proporcionar instrucciones sobre cómo se puede realizar la autenticación adecuada en escenarios no interactivos. Este modelo se compone de dos pasos distintos
Paso | Descripción |
---|---|
Consentir | Aquí donde se autenticará de forma interactiva mediante el flujo de código de autorización o el flujo de código del dispositivo. La respuesta de Azure Active Directory contendrá un token de acceso y un token de actualización. El valor del token de actualización debe almacenarse en algún lugar seguro, como Azure Key Vault. La aplicación usará este valor, o script, en lugar de la credencial de usuario al autenticarse. |
Exchange | Con el token de actualización almacenado de forma segura, generado a través del paso de consentimiento, solicitará un nuevo token de acceso desde Azure Active Directory. Consulte Actualizar el token de acceso para obtener más información sobre el valor del token de actualización. |
Importante
De forma predeterminada, la duración de un token de actualización es de 90 días. Por lo tanto, es importante que tenga un proceso para actualizar el token de actualización antes de la expiración. Si expira, recibirá un error similar al siguiente al intentar intercambiarlo por un token de acceso. El token de actualización ha expirado debido a la inactividad. El token se emitió el 2019-01-02T09:19:53.5422744Z y estaba inactivo para 90.00:00:00.
Consentir
El paso de consentimiento se puede realizar a través de varios métodos diferentes. Al usar PowerShell, se recomienda usar el cmdlet New-SecMgmtAccessToken . A continuación se muestra un ejemplo de cómo puede solicitar un nuevo token de acceso para su uso con Microsoft Graph o este módulo de PowerShell.
$credential = Get-Credential
New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
Importante
Al usar el UseAuthorizationCode
parámetro, se le pedirá que se autentificación de forma interactiva mediante el flujo de código de autorización. El valor del URI de redirección se generará dinámicamente. Este proceso de generación intentará encontrar un puerto entre 8400 y 8999 que no está en uso. Una vez encontrado un puerto disponible, se construirá el valor de la dirección URL de redireccionamiento (por ejemplo, http://localhost:8400). Por lo tanto, es importante que haya configurado el valor del URI de redireccionamiento para la aplicación de Azure Active Directory en consecuencia.
El primer comando obtiene las credenciales de la entidad de servicio (identificador de aplicación y secreto) y, a continuación, las almacena en la $credential
variable . El segundo comando generará un nuevo token de acceso mediante las credenciales de la entidad de servicio almacenadas en la $credential
variable y el flujo de código de autorización. La salida de este comando contendrá varios valores, incluido un token de actualización. Ese valor debe almacenarse en algún lugar seguro, como Azure Key Vault porque se usará en lugar de credenciales de usuario en futuras operaciones.
Exchange
El paso de intercambio se puede realizar a través de varios métodos diferentes. Al usar PowerShell, se recomienda usar el cmdlet New-SecMgmtAccessToken . A continuación se muestra un ejemplo de cómo intercambiar un token de actualización para un token de acceso.
$credential = Get-Credential
$refreshToken = '<refreshToken>'
New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
El primer comando obtiene las credenciales de la entidad de servicio (identificador de aplicación y secreto) y, a continuación, las almacena en la $credential
variable . El tercer comando generará un nuevo token de acceso mediante las credenciales de la entidad de servicio almacenadas en la $credential
variable y el token de actualización almacenado en la variable para la $refreshToken
autenticación.
Ejemplos
En las secciones siguientes se muestra cómo usar el cmdlet New-SecMgmtAccessToken para solicitar tokens de acceso y conectarse a otros módulos de PowerShell usados habitualmente.
Azure
Azure PowerShell
$credential = Get-Credential
$refreshToken = '<RefreshToken>'
$azureToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://management.azure.com//user_impersonation' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
$graphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
# Az Module
Connect-AzAccount -AccessToken $token.AccessToken -AccountId 'azureuser@contoso.com' -GraphAccessToken $graphToken.AccessToken -TenantId 'xxxx-xxxx-xxxx-xxxx'
Nota:
Al conectarse a un entorno en el que tenga el administrador en nombre de los privilegios, deberá especificar el identificador de inquilino para el entorno de destino mediante el Tenant
parámetro . Con respecto al programa Proveedor de soluciones en la nube, esto significa que especificará el identificador de inquilino del inquilino de Azure Active Directory del cliente mediante el Tenant
parámetro .
Microsoft 365
Azure Active Directory
$credential = Get-Credential
$refreshToken = '<RefreshToken>'
$aadGraphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
$graphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
Connect-AzureAD -AadAccessToken $aadGraphToken.AccessToken -AccountId 'azureuser@contoso.com' -MsAccessToken $graphToken.AccessToken
Nota
Al conectarse a un entorno en el que tenga el administrador en nombre de los privilegios, deberá especificar el identificador de inquilino para el entorno de destino mediante el Tenant
parámetro . Con respecto al programa Proveedor de soluciones en la nube, esto significa que especificará el identificador de inquilino del inquilino de Azure Active Directory del cliente mediante el Tenant
parámetro .
PowerShell de Exchange Online
Al generar el token de actualización inicial, deberá usar lo siguiente:
$token = New-SecMgmtAccessToken -Module ExchangeOnline
Importante
Después de invocar los comandos anteriores, encontrará que el valor del token de actualización está disponible a través de $token.RefreshToken
. Este valor debe almacenarse en un repositorio seguro, como Azure Key Vault, para asegurarse de que es adecuado, ya que se usará en lugar de credenciales.
Use lo siguiente para generar un nuevo token de acceso mediante la actualización y, a continuación, cree la sesión en la que se conectará a Exchange Online PowerShell.
$customerId = '<CustomerId>'
$customerDomainName = '<CustomerDomainName>'
$refreshToken = '<RefreshTokenValue>'
$upn = '<UPN-used-to-generate-the-refresh-token>'
$token = New-SecMgmtAccessToken -RefreshToken $token.RefreshToken -Scopes 'https://outlook.office365.com/.default' -Tenant $customerId -ApplicationId 'a0c73c16-a7e3-4564-9a95-2bdf47383716'
$tokenValue = ConvertTo-SecureString "Bearer $($token.AccessToken)" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($upn, $tokenValue)
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid?DelegatedOrg=$($customerDomainName)&BasicAuthToOAuthConversion=true" -Credential $credential -Authentication Basic -AllowRedirection
Import-PSSession $session
Importante
El identificador de aplicación a0c73c16-a7e3-4564-9a95-2bdf47383716 es para la aplicación Azure Active Direcotry de PowerShell Exchange Online. Al solicitar un acceso o actualizar un token para su uso con Exchange Online PowerShell, deberá usar este valor.
MS Online
$credential = Get-Credential
$refreshToken = '<RefreshToken>'
$aadGraphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.windows.net/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
$graphToken = New-SecMgmtAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Credential $credential -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant 'yyyy-yyyy-yyyy-yyyy'
Connect-MsolService -AdGraphAccessToken $aadGraphToken.AccessToken -MsGraphAccessToken $graphToken.AccessToken