Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este início rápido mostra como usar o SDK de Proteção da PIM para modelos de proteção disponíveis ao usuário.
Pré-requisitos
Caso ainda não tenha feito isso, certifique-se de concluir os seguintes pré-requisitos antes de continuar:
- Conclua Início Rápido – Inicialização do aplicativo cliente – SDK de proteção (C++) primeiro, para criar uma solução inicial do Visual Studio. Este início rápido "Listar modelos de proteção" depende do anterior para a criação adequada da solução inicial.
- Opcionalmente: examine os conceitos de modelos do RMS .
Adicionar lógica para listar os modelos de proteção
Adicione lógica para listar modelos de proteção disponíveis para um usuário, usando o objeto do mecanismo de proteção.
Abra a solução do Visual Studio que você criou no artigo anterior "Início Rápido – Inicialização do aplicativo cliente – SDK de Proteção (C++)".
Usando o Gerenciador de Soluções, abra o arquivo .cpp em seu projeto que contém a implementação do
main()método. Ele usa como padrão o mesmo nome do projeto que o contém, que você especificou durante a criação do projeto.Adicione a seguinte
usingdiretiva depoisusing mip::ProtectionEngine;, perto da parte superior do arquivo:using std::endl;Até o fim do corpo
main(), embaixo do colchete de fechamento}do último blococatche acima dereturn 0;(no ponto em que você parou no 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 script do PowerShell a seguir 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 "Instalação e configuração do SDK do MIP".
Crie um arquivo de script do PowerShell ( extensão.ps1) e copie/cole o seguinte script no arquivo:
$authoritye$resourceUrlsão atualizados posteriormente, na seção a seguir.- Atualize
$appIde$redirectUri, para que corresponda aos valores especificados no registro do aplicativo 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 clipboardSalve o arquivo de script para que você possa executá-lo mais tarde, quando solicitado pelo aplicativo cliente.
Criar e testar o aplicativo
Por fim, crie e teste seu aplicativo cliente.
Use Ctrl+Shift+b (Build Solution) para criar seu aplicativo cliente. Se você não tiver erros de build, 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 variáveis
$authoritye$resourceUrl. Eles devem corresponder aos valores especificados na saída do console na etapa nº 2.Execute o script do PowerShell. O
Get-ADALTokencmdlet dispara um prompt de autenticação do Microsoft Entra, semelhante ao exemplo abaixo. Especifique a mesma conta fornecida na saída do console na etapa nº 2. Após uma conexão bem-sucedida, o token de acesso será colocado na área de transferência.Talvez você também precise dar consentimento para permitir que o aplicativo acesse as APIs de MIP enquanto estiver em execução na conta de login. Isso acontece quando o registro de aplicativo do Microsoft Entra não é pré-consentido (conforme descrito em "Configuração e configuração do SDK do MIP"), ou você está entrando com uma conta de um locatário diferente (diferente daquela em que seu aplicativo está registrado). Basta clicar em Aceitar para registrar seu consentimento.
Depois de colar o token de acesso no prompt da etapa nº 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 . . .Observação
Copie e salve a ID de um ou mais modelos de proteção (por exemplo),
f42a3342-8706-4288-bd31-ebb85995028zpois você a usará no próximo 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? Chamada à API com falha: profile_add_engine_async falhou com: [class mip::PolicySyncException] Falha na aquisição de política, Falha na solicitação com o código de status http: 401, x-ms-diagnostics: [2000001;reason="OAuth token submitted with the request cannot be parsed.";error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]' C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (processo 29924) foi encerrado com o código 0. Pressione qualquer tecla para fechar esta janela. . . |
Se o projeto foi compilado com sucesso, mas você viu uma saída semelhante à da esquerda, provavelmente você tem um token inválido ou expirado em seu método AcquireOAuth2Token(). Volte para Criar um script do PowerShell para gerar tokens de acesso e regenerar o token de acesso, atualizar AcquireOAuth2Token() novamente e recompilar/retestir. Você também pode examinar e verificar o token e suas declarações, usando o jwt.ms aplicativo Web de página única. |
Próximas etapas
Agora que você aprendeu a listar os modelos de proteção disponíveis para um usuário autenticado, experimente o próximo início rápido:
[Criptografar e descriptografar texto](quick-protection-encrypt-decrypt text-cpp.md)

