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

En este inicio rápido se indica cómo usar el SDK de protección de MIP a fin de mostrar las plantillas de protección disponibles para el usuario.

Requisitos previos

Si aún no lo ha hecho, asegúrese de completar los siguientes requisitos previos antes de continuar:

Adición de lógica para mostrar las plantillas de protección

Agregue lógica para mostrar las plantillas de protección disponibles para un usuario mediante el objeto del motor de protección.

  1. Abra la solución de Visual Studio que ha creado en el artículo anterior, "Inicio rápido: Inicialización de la aplicación cliente para el SDK de protección (C++)".

  2. Mediante el Explorador de soluciones, abra el archivo .cpp en el proyecto que contiene la implementación del método . El valor predeterminado es el mismo nombre que el proyecto que lo contiene, el cual ha especificado al crear el proyecto.

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

    using std::endl;
    
  4. Cerca del final del cuerpo de main(), debajo de la llave de cierre } del último bloque catch y encima de return 0; (donde haya terminado en la guía de 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;
     }
    
    

Crear un script de PowerShell para generar tokens de acceso

Use el siguiente script de PowerShell para generar los tokens de acceso que solicite el SDK en su implementación de AuthDelegateImpl::AcquireOAuth2Token. El script usa el cmdlet Get-ADALToken del módulo ADAL.PS que ha instalado anteriormente en “Instalación y configuración del SDK de MIP”.

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

    • $authority y $resourceUrl se actualizan más tarde en la sección siguiente.
    • Actualice $appId y $redirectUri para que coincidan con los valores especificados en el registro de la aplicación de Azure AD.
    $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

Compile y pruebe la aplicación cliente.

  1. Presione Ctrl+Mayús+B (Compilar solución) para compilar la aplicación cliente. Si no aparece ningún error 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 reutilizar un token generado anteriormente si se le pide varias veces y los valores solicitados son los mismos:

  3. Para generar un token de acceso para la petición, vuelva al script de PowerShell y haga lo siguiente:

    • Actualice las variables $authority y $resourceUrl. Tienen que coincidir con los valores especificados en la salida de la consola del paso 2.

    • Ejecute el script de PowerShell. El cmdlet Get-ADALToken desencadena una petición de autenticación de Azure AD similar al ejemplo siguiente. Especifique la misma cuenta proporcionada en la salida de la consola del paso 2. Después de iniciar sesión correctamente, el token de acceso se copiará en el Portapapeles.

      Inicio de sesión para la obtención del token por Visual Studio

    • Puede que también necesite conceder permiso para que la aplicación acceda a las API de MIP mientras se ejecuta con la cuenta de inicio de sesión. Esto ocurre cuando no se concede de forma previa el registro de la aplicación de Azure AD (como se indica en “Instalación y configuración del SDK de MIP”), o bien si ha iniciado sesión con una cuenta desde otro inquilino (un inquilino donde no se ha registrado la aplicación). Solo tiene que hacer clic en Aceptar para registrar el consentimiento.

      Consentimiento de Visual Studio

  4. Después de pegar el token de acceso en el aviso del paso 2, en la salida de la consola se mostrarán las etiquetas de confidencialidad, de forma 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 más de las plantillas de protección (por ejemplo, f42a3342-8706-4288-bd31-ebb85995028z), ya que lo usará en el próximo inicio rápido.

Solución de problemas

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

Resumen Mensaje de error Solución
Token de acceso incorrecto Se ha producido una excepción... ¿El token de acceso es incorrecto o ha expirado?

Error de llamada API: profile_add_engine_async Error con: [class mip::PolicySyncException] Error en la adquisición de la directiva, Error en la solicitud web con el código de estado HTTP: 401, x-ms-diagnostics: [2000001;reason="No se puede analizar el token de OAuth enviado con la solicitud.";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 se muestra un resultado similar al que aparece a la izquierda, es probable que tenga un token no válido o expirado en el método AcquireOAuth2Token(). Regrese a Crear un script de PowerShell para generar tokens de acceso, genere de nuevo un token de acceso, actualice otra vez y repita la compilación o las pruebas. También puede examinar y verificar el token y sus notificaciones con la aplicación web de una página jwt.ms.

Pasos siguientes

Ahora que ha aprendido a mostrar las plantillas de protección disponibles para un usuario autenticado, pruebe el siguiente inicio rápido:

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