Guia de início rápido: modelos de proteção de lista (C++)
Este Guia de início rápido mostra como usar o SDK de proteção MIP para modelos de proteção disponíveis para o usuário.
Pré-requisitos
Se ainda não o fez, certifique-se de que preenche os seguintes pré-requisitos antes de continuar:
- Guia de início rápido completo - Inicialização do aplicativo cliente - SDK de proteção (C++) primeiro, que cria uma solução inicial do Visual Studio. Este Guia de início rápido "Lista de modelos de proteção" baseia-se no anterior, para a criação adequada da solução inicial.
- Opcionalmente: Revise os conceitos de Modelos do RMS.
Adicionar lógica para listar os modelos de proteção
Adicione lógica à lista de modelos de proteção disponíveis para um usuário, usando o objeto Mecanismo de proteção.
Abra a solução Visual Studio que você criou no artigo anterior "Guia de início rápido - inicialização do aplicativo cliente - SDK de proteção (C++)".
Usando o Gerenciador de Soluções, abra o arquivo de .cpp em seu projeto que contém a
main()
implementação do método. O padrão é o mesmo nome do projeto que o contém, que você especificou durante a criação do projeto.Adicione a seguinte
using
diretiva apósusing mip::ProtectionEngine;
, perto da parte superior do arquivo:using std::endl;
No final do corpo, abaixo da chave
}
de fechamento do últimocatch
bloco e acimareturn 0;
(onde você parou no Guia demain()
início rápido anterior), insira o seguinte código:// 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; }
Criar um script do PowerShell para gerar tokens de acesso
Use o seguinte script do PowerShell para gerar tokens de acesso, que são solicitados pelo SDK em sua AuthDelegateImpl::AcquireOAuth2Token
implementação. O script usa o Get-ADALToken
cmdlet do módulo ADAL.PS instalado anteriormente, em "MIP SDK Setup and configuration".
Crie um arquivo de script do PowerShell (extensão .ps1) e copie/cole o seguinte script no arquivo:
$authority
e$resourceUrl
são atualizados posteriormente, na seção a seguir.- Atualize
$appId
e$redirectUri
, para corresponder aos valores especificados no registo da aplicação 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
Salve o arquivo de script para que você possa executá-lo mais tarde, quando solicitado pelo seu aplicativo cliente.
Crie e teste o aplicativo
Finalmente, crie e teste seu aplicativo cliente.
Use Ctrl+Shift+b (Build Solution) para criar seu aplicativo cliente. Se você não tiver erros de compilação, use F5 (Iniciar depuração) para executar seu aplicativo.
Se o projeto for compilado e executado com êxito, o aplicativo solicitará um token de acesso, sempre que o SDK chamar seu
AcquireOAuth2Token()
método. Você pode reutilizar um token gerado anteriormente, se solicitado várias vezes e os valores solicitados forem os mesmos:Para gerar um token de acesso para o prompt, volte para o script do PowerShell e:
Atualize as
$authority
variáveis e$resourceUrl
. Eles devem corresponder aos valores especificados na saída do console na etapa #2.Execute o script do PowerShell. O
Get-ADALToken
cmdlet aciona um prompt de autenticação do Microsoft Entra, semelhante ao exemplo abaixo. Especifique a mesma conta fornecida na saída do console na etapa #2. Após o login bem-sucedido, o token de acesso será colocado na área de transferência.Você também pode precisar dar consentimento, para permitir que o aplicativo acesse as APIs MIP, enquanto estiver sendo executado sob a conta de login. Isso acontece quando o registro do aplicativo Microsoft Entra não é pré-consentido (conforme descrito em "Instalação e configuração do MIP SDK") ou quando você está entrando com uma conta de um locatário diferente (diferente daquele em que seu aplicativo está registrado). Basta clicar em Aceitar para registar o seu consentimento.
Depois de colar o token de acesso no prompt da etapa #2, a saída do console deve mostrar os modelos de proteção, semelhante ao exemplo a seguir:
*** 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 e salve a ID de um ou mais modelos de proteção (por exemplo,
f42a3342-8706-4288-bd31-ebb85995028z
), como você usará no próximo Guia de início rápido.
Resolução de problemas
Problemas durante a execução do aplicativo C++
Resumo | Mensagem de erro | Solução |
---|---|---|
Token de acesso incorreto | Ocorreu uma exceção... O token de acesso está incorreto/expirado? Falha na chamada de API: profile_add_engine_async Falha com: [class mip::P olicySyncException] Falha na aquisição da política, Falha na solicitação com código de status http: 401, x-ms-diagnostics: [2000001; reason="O token OAuth enviado com a solicitação não pode ser analisado."; error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]' C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (processo 29924) saiu com o código 0. Pressione qualquer tecla para fechar esta janela. . . |
Se o seu projeto é compilado com êxito, mas você vê uma saída semelhante à esquerda, você provavelmente tem um token inválido ou expirado em seu AcquireOAuth2Token() método. Volte para Criar um script do PowerShell para gerar tokens de acesso e regenerar o token de acesso, atualizar AcquireOAuth2Token() novamente e reconstruir/testar. Você também pode examinar e verificar o token e suas declarações, usando o jwt.ms aplicativo Web de página única. |
Passos Seguintes
Agora que você aprendeu como listar os modelos de proteção disponíveis para um usuário autenticado, tente o próximo início rápido:
[Encriptar e desencriptar texto] (quick-protection-encrypt-decrypt text-cpp.md)