Usar la autenticación solo de aplicación con el SDK de Microsoft Graph PowerShellUse app-only authentication with the Microsoft Graph PowerShell SDK

El SDK de PowerShell admite dos tipos de autenticación: acceso delegadoy acceso solo de aplicación.The PowerShell SDK supports two types of authentication: delegated access, and app-only access. Esta guía se centrará en la configuración necesaria para habilitar el acceso de solo aplicación.This guide will focus on the configuration needed to enable app-only access.

Importante

El acceso de solo aplicación concede permisos directamente a una aplicación y requiere que un administrador dé su consentimiento a los ámbitos de permiso necesarios.App-only access grants permissions directly to an application, and requires an administrator to consent to the required permission scopes. Para obtener más información sobre el acceso solo de aplicación, consulte Microsoft Identity Platform y el flujo de credenciales de cliente de OAuth 2,0.For more details on app-only access, see Microsoft identity platform and the OAuth 2.0 client credentials flow.

Veamos cómo configurar el acceso de solo aplicación para un script sencillo para enumerar los usuarios y grupos de su inquilino de Microsoft 365.Let's walk through configuring app-only access for a simple script to list users and groups in your Microsoft 365 tenant.

ConfiguraciónConfiguration

Para poder usar el acceso de solo aplicación con el SDK, necesita lo siguiente.Before you can use app-only access with the SDK, you need the following.

  • Un certificado para usarlo como credencial para la aplicación.A certificate to use as a credential for the application. Puede ser un certificado autofirmado o un certificado de una entidad de certificación.This can be a self-signed certificate or a certificate from an authority.
  • Debe registrar una aplicación en Azure ad, configurarla con los ámbitos de permisos que necesita su escenario y compartir la clave pública para el certificado.You must register an application in Azure AD, configure it with the permission scopes your scenario requires, and share the public key for your certificate.

CertificadoCertificate

Necesitará un certificado X. 509 instalado en el almacén de confianza del usuario en el equipo donde ejecutará el script.You will need an X.509 certificate installed in your user's trusted store on the machine where you will run the script. También necesitará exportar la clave pública del certificado en formato. cer,. PEM o. CRT.You'll also need the certificate's public key exported in .cer, .pem, or .crt format. Necesitará el valor del asunto del certificado.You'll need the value of the certificate subject.

Registrar la aplicaciónRegister the application

Puede registrar la aplicación en el portal de Azure Active Directory, o bien usar PowerShell.You can register the application either in the Azure Active Directory portal, or using PowerShell.

  1. Abra un explorador y vaya al centro de administración de Azure Active Directory e inicie sesión con un administrador de la organización del arrendatario de Microsoft 365.Open a browser and navigate to the Azure Active Directory admin center and login using an Microsoft 365 tenant organization admin.

  2. Seleccione Azure Active Directory en el panel de navegación izquierdo y, a continuación, seleccione Registros de aplicaciones en Administrar .Select Azure Active Directory in the left-hand navigation, then select App registrations under Manage .

    Una captura de pantalla de los registros de la aplicaciónA screenshot of the App registrations

  3. Seleccione Nuevo registro .Select New registration . En la página Registrar una aplicación , establezca los valores siguientes.On the Register an application page, set the values as follows.

    • Establezca Nombre como Graph PowerShell Script.Set Name to Graph PowerShell Script.
    • Establezca los tipos de cuenta admitidos solo en las cuentas de este directorio de organización .Set Supported account types to Accounts in this organizational directory only .
    • Deje el URI de redireccionamiento en blanco.Leave Redirect URI blank.

    Captura de pantalla de la página registrar una aplicación

  4. Seleccione Registrar .Select Register . En la página script de PowerShell de Graph , copie los valores del identificador de la aplicación (cliente) y el identificador del directorio (inquilino) y guárdelos.On the Graph PowerShell Script page, copy the values of the Application (client) ID and Directory (tenant) ID and save them.

    Captura de pantalla del identificador de la aplicación del nuevo registro de la aplicación

  5. Seleccione permisos de API en administrar .Select API Permissions under Manage . Elija Agregar un permiso .Choose Add a permission .

  6. Seleccione Microsoft Graph y, a continuación, permisos de la aplicación .Select Microsoft Graph , then Application Permissions . Agregue User. Read. All y Group. Read. All y, a continuación, seleccione Agregar permisos .Add User.Read.All and Group.Read.All , then select Add permissions .

  7. En los permisos configurados , quite el usuario delegado. permiso de lectura en Microsoft Graph seleccionando ... a la derecha del permiso y seleccionando quitar permiso .In the Configured permissions , remove the delegated User.Read permission under Microsoft Graph by selecting the ... to the right of the permission and selecting Remove permission . Seleccione sí, quitar para confirmar.Select Yes, remove to confirm.

  8. Seleccione el botón conceder consentimiento del administrador para... y seleccione para conceder el consentimiento del administrador para los permisos de la aplicación configurada.Select the Grant admin consent for... button, then select Yes to grant admin consent for the configured application permissions. La columna Estado de la tabla permisos configurados cambia a concedido para... .The Status column in the Configured permissions table changes to Granted for ... .

    Una captura de pantalla de los permisos configurados para el webhook con consentimiento de administrador concedido

  9. Seleccione Certificados y secretos en Administrar .Select Certificates & secrets under Manage . Seleccione el botón cargar certificado .Select the Upload certificate button. Busque el archivo de clave pública del certificado y seleccione Agregar .Browse to your certificate's public key file and select Add .

AutenticarAuthenticate

Debe tener tres datos después de completar los pasos de configuración anteriores.You should have three pieces of information after completing the configuration steps above.

  • Firmante del certificado del certificado cargado en el registro de la aplicación de Azure AD.Certificate subject of the certificate uploaded to your Azure AD app registration.
  • IDENTIFICADOR de la aplicación para el registro de la aplicación.Application ID for your app registration.
  • El identificador de inquilino.Your tenant ID.

Vamos a usarlos para probar la autenticación.Let's use those to test authentication. Abra PowerShell y ejecute el siguiente comando, reemplazando los marcadores de posición por la información.Open PowerShell and run the following command, replacing the placeholders with your information.

Connect-MgGraph -ClientID YOUR_APP_ID -TenantId YOUR_TENANT_ID -CertificateName YOUR_CERT_SUBJECT

Si se realiza correctamente, verá Welcome To Microsoft Graph! .If this succeeds, you will see Welcome To Microsoft Graph!. Ejecutar Get-MgContext para comprobar que se ha autenticado solo con la aplicación.Run Get-MgContext to verify that you've authenticated with app-only. El resultado debe ser similar al siguiente.The output should look like the following.

ClientId              : YOUR_APP_ID
TenantId              : YOUR_TENANT_ID
CertificateThumbprint :
Scopes                : {Group.Read.All, User.Read.All}
AuthType              : AppOnly
CertificateName       : YOUR_CERT_SUBJECT
Account               :
AppName               : Graph PowerShell Script
ContextScope          : Process

Crear el scriptCreate the script

Cree un nuevo archivo denominado GraphAppOnly.ps1 y agregue el código siguiente.Create a new file named GraphAppOnly.ps1 and add the following code.

# Authenticate
Connect-MgGraph -ClientID YOUR_APP_ID -TenantId YOUR_TENANT_ID -CertificateName YOUR_CERT_SUBJECT

Write-Host "USERS:"
Write-Host "======================================================"
# List first 50 users
Get-MgUser -Property "id,displayName" -PageSize 50 | Format-Table DisplayName, Id

Write-Host "GROUPS:"
Write-Host "======================================================"
# List first 50 groups
Get-MgGroup -Property "id,displayName" -PageSize 50 | Format-Table DisplayName, Id

# Disconnect
Disconnect-MgGraph

Reemplace los marcadores de posición del Connect-MgGraph comando por su información.Replace the placeholders in the Connect-MgGraph command with your information. Guarde el archivo y, a continuación, abra PowerShell en el directorio en el que creó el archivo.Save the file, then open PowerShell in the directory where you created the file. Ejecute el script con el siguiente comando.Run the script with the following command.

.\GraphAppOnly.ps1

La secuencia de comandos genera una lista de usuarios y grupos similar a la salida siguiente (truncado para mayor brevedad).The script outputs a list of users and groups similar to the output below (truncated for brevity).

Welcome To Microsoft Graph!
USERS:
======================================================

DisplayName              Id
-----------              --
Conf Room Adams          88d1ba68-8ff5-4de2-90ed-768c00abcfae
Adele Vance              3103c7b9-cfe6-4cd3-a696-f88909b9a609
MOD Administrator        da3a885e-2d97-41de-9347-5271ef321b58
...

GROUPS:
======================================================

DisplayName                         Id
-----------                         --
App Development                     06dce3e5-d310-4add-ab2c-be728fb9076e
All Employees                       1a1cd42d-9801-4e9d-9b77-5215886174ef
Mark 8 Project Team                 2bf1b0d0-81f6-4e80-b971-d1db69f8d651
...