Inicio rápido: Enumeración de plantillas de protección (C++)

En este inicio rápido, se muestra cómo usar el SDK de protección de MIP para enumerar las plantillas de protección disponibles para el usuario.

Requisitos previos

Si todavía no lo ha hecho, complete los siguientes requisitos previos antes de continuar:

Incorporación de lógica para enumerar las plantillas de protección

Agregue lógica a las plantillas de protección de lista disponibles para un usuario con el objeto de motor de Protection.

  1. Abra la solución de Visual Studio que creó en el artículo anterior "Inicio rápido: Inicialización de aplicaciones cliente para SDK de Protection (C++)".

  2. Con el Explorador de soluciones, abra el archivo .cpp del proyecto que contiene la implementación del método main(). De manera predeterminada, tiene el mismo nombre que el proyecto que lo contiene, que especificó al crear el proyecto.

  3. Agregue la directiva using siguiente después de using mip::ProtectionEngine;, cerca de la parte superior del archivo:

    using std::endl;
    
  4. Hacia la parte final del cuerpo de main(), debajo de la llave de cierre } del último bloque catch y el superior return 0; (donde lo dejó en el inicio rápido anterior), inserte el código siguiente:

     // List protection templates
     const shared_ptr<ProtectionEngineObserver> engineObserver = std::make_shared<ProtectionEngineObserver>();
     // Create a context to pass to 'ProtectionEngine::GetTemplateListAsync'. That context will be forwarded to the
     // corresponding ProtectionEngine::Observer methods. In this case, we use promises/futures as a simple way to detect
     // the async operation completes synchronously.
     auto loadPromise = std::make_shared<std::promise<vector<shared_ptr<mip::TemplateDescriptor>>>>();
     std::future<vector<shared_ptr<mip::TemplateDescriptor>>> loadFuture = loadPromise->get_future();
     engine->GetTemplatesAsync(engineObserver, loadPromise);
     auto templates = loadFuture.get();
    
     cout << "*** Template List: " << endl;
    
     for (const auto& protectionTemplate : templates) {
         cout << "Name: " << protectionTemplate->GetName() << " : " << protectionTemplate->GetId() << endl;
     }
    
    

Creación de un script de PowerShell para generar tokens de acceso

Use el script siguiente de PowerShell para generar tokens de acceso solicitados por el SDK en la implementación de AuthDelegateImpl::AcquireOAuth2Token. El script usa el cmdlet Get-ADALToken del módulo ADAL.PS instalado anteriormente, en "Instalación y configuración del SDK de MIP".

  1. Cree un archivo de script de PowerShell (extensión .ps1) y copie y pegue el script siguiente en el archivo:

    • $authority y $resourceUrl se actualizan más adelante, en la sección siguiente.
    • Actualice $appId y $redirectUri para que coincidan con los valores especificados en el registro de aplicaciones de Microsoft Entra.
    $authority = '<authority-url>'                   # Specified when SDK calls AcquireOAuth2Token()
    $resourceUrl = '<resource-url>'                  # Specified when SDK calls AcquireOAuth2Token()
    $appId = '<app-ID>'                              # App ID of the Azure AD app registration
    $redirectUri = '<redirect-uri>'                  # Redirect URI of the Azure AD app registration
    $response = Get-ADALToken -Resource $resourceUrl -ClientId $appId -RedirectUri $redirectUri -Authority $authority -PromptBehavior:RefreshSession
    $response.AccessToken | clip                     # Copy the access token text to the clipboard
    
  2. Guarde el archivo de script para poder ejecutarlo más tarde, cuando lo solicite la aplicación cliente.

Compilar y probar la aplicación

Finalmente, compile y pruebe la aplicación cliente.

  1. Presione Ctrl+Mayús+b (Compilar solución) para compilar la aplicación cliente. Si no hay errores de compilación, presione F5 (Iniciar depuración) para ejecutar la aplicación.

  2. Si el proyecto se compila y se ejecuta correctamente, la aplicación solicita un token de acceso cada vez que el SDK llama al método AcquireOAuth2Token(). Puede volver a usar un token generado anteriormente, si se le solicita varias veces y los valores solicitados son los mismos:

  3. Para generar un token de acceso para el mensaje, vuelva al script de PowerShell y:

    • Actualice las variables $authority y $resourceUrl. Deben coincidir con los valores especificados en el resultado de la consola en el paso 2.

    • Ejecute el script de PowerShell. El cmdlet Get-ADALToken desencadena una confirmación de autenticación de Microsoft Entra, similar al ejemplo siguiente. Especifique la misma cuenta proporcionada en el resultado de la consola en el paso 2. Después de iniciar sesión correctamente, el token de acceso se colocará en el Portapapeles.

      Visual Studio acquire token sign-in

    • Es posible que también deba dar su consentimiento para permitir que la aplicación acceda a las API de MIP mientras se ejecuta en la cuenta de inicio de sesión. Esto ocurre cuando el consentimiento al registro de la aplicación de Microsoft Entra no se ha dado previamente (como se describe en “Instalación y configuración del SDK de MIP”) o está iniciando sesión con una cuenta de otro inquilino (que no es donde está registrada la aplicación). Simplemente haga clic en Aceptar para registrar su consentimiento.

      Visual Studio consent

  4. Después de pegar el token de acceso en el mensaje del paso 2, el resultado de la consola debe mostrar las plantillas de protección, de manera similar al ejemplo siguiente:

    *** Template List:
    Name: Confidential \ All Employees : a74f5027-f3e3-4c55-abcd-74c2ee41b607
    Name: Highly Confidential \ All Employees : bb7ed207-046a-4caf-9826-647cff56b990
    Name: Confidential : 174bc02a-6e22-4cf2-9309-cb3d47142b05
    Name: Contoso Employees Only : 667466bf-a01b-4b0a-8bbf-a79a3d96f720
    
    C:\MIP Sample Apps\ProtectionQS\Debug\ProtectionQS.exe (process 8252) exited with code 0.
    To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
    
    Press any key to continue . . .
    

    Nota:

    Copie y guarde el identificador de una o varias de las plantillas de protección (por ejemplo,f42a3342-8706-4288-bd31-ebb85995028z ), como lo usará en el inicio rápido siguiente.

Solución de problemas

Problemas durante la ejecución de la aplicación de C++

Resumen Mensaje de error Solución
Token de acceso incorrecto Error de excepción… ¿el token de acceso es incorrecto o ha expirado?

Error en la llamada API: profile_add_engine_async Error con: [class mip::PolicySyncException] Error al adquirir la directiva, Error de solicitud con código de estado HTTP: 401, x-ms-diagnostics: [2000001;reason="El token de OAuth enviado con la solicitud no se puede analizar.";error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (proceso 29924) se cerró con el código 0.

Presione cualquier tecla para cerrar esta ventana. . .
Si el proyecto se compila correctamente, pero observa resultados similares a la izquierda, es probable que tenga un token no válido o expirado en el método AcquireOAuth2Token(). Vuelva a Creación de un script de PowerShell para generar tokens de acceso y vuelva a generar el token de acceso, actualice AcquireOAuth2Token() nuevamente y vuelva a generarlo o a probarlo. También puede examinar y comprobar el token y sus notificaciones con la aplicación web de una sola página jwt.ms.

Pasos siguientes

Ahora que aprendió a enumerar las plantillas de protección disponibles para el usuario autenticado, pruebe el inicio rápido siguiente:

[Cifrado o descifrado de texto](quick-protection-encrypt-decrypt text-cpp.md)