Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве показано, как использовать пакет SDK для защиты MIP для перечисления шаблонов защиты, доступных пользователю.
Предпосылки
Перед продолжением выполните следующие предварительные требования:
- Сначала завершите выполнение Краткого руководства - Инициализация клиентского приложения - Защита SDK (C++), которое создает начальное решение Visual Studio. Это краткое руководство "Список шаблонов защиты" основано на предыдущем кратком руководстве и позволяет правильно создать начальное решение.
- Необязательно. Ознакомьтесь с основными понятиями шаблонов RMS .
Добавление логики для перечисления шаблонов защиты
Добавьте логику в список шаблонов защиты, доступных пользователю с помощью объекта подсистемы защиты.
Откройте решение Visual Studio, созданное в предыдущей статье "Краткое руководство . Инициализация клиентского приложения — пакет SDK для защиты (C++)".
В Обозреватель решений откройте файл .cpp в проекте, который содержит реализацию
main()метода. По умолчанию используется то же имя, что и проект, содержащий его, указанный во время создания проекта.Добавьте следующую
usingдирективу послеusing mip::ProtectionEngine;, в верхней части файла.using std::endl;В конце тела
main(), под закрывающей фигурной скобкой}последнего блокаcatchи надreturn 0;(на этом месте вы остановились в предыдущем кратком руководстве), вставьте следующий код:// 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; }
Создание скрипта PowerShell для создания маркеров доступа
Используйте следующий скрипт PowerShell, чтобы создать маркеры доступа, запрашиваемые пакетом SDK в реализации AuthDelegateImpl::AcquireOAuth2Token . Скрипт использует командлет Get-MsalToken из ранее установленного модуля MSAL.PS в разделе "Установка и настройка пакета SDK MIP".
Создайте файл скрипта PowerShell (расширение.ps1), скопируйте и вставьте следующий скрипт в файл:
-
$authorityи$resourceUrlобновляются позже в следующем разделе. - Обновите
$appIdи$redirectUriв соответствии со значениями, которые вы указали при регистрации приложения 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 Microsoft Entra app registration $redirectUri = '<redirect-uri>' # Redirect URI of the Microsoft Entra app registration $scope = $resourceUrl + "/.default" $response = Get-MsalToken -ClientId $appId -Authority $authority -RedirectUri $redirectUri -Scopes $scope -Interactive $response.AccessToken | clip # Copy the access token text to the clipboard-
Сохраните файл скрипта, чтобы его можно было запустить позже, когда запрашивается клиентское приложение.
Создание и тестирование приложения
Создайте и протестируйте клиентское приложение.
Используйте Ctrl+Shift+B (Собрать решение), чтобы собрать клиентское приложение. Если сборка не имеет ошибок, используйте F5 (начать отладку) для запуска приложения.
Если ваш проект успешно собирается и запускается, приложение запрашивает токен доступа каждый раз, когда SDK вызывает метод
AcquireOAuth2Token(). Вы можете повторно использовать ранее созданный маркер, если запрашивается несколько раз, а запрошенные значения одинаковы:Чтобы создать маркер доступа для запроса, вернитесь к скрипту PowerShell и выполните следующие действия.
Обновите переменные
$authorityи$resourceUrl. Они должны соответствовать значениям, указанным в выходных данных консоли на шаге 2.Запустите сценарий PowerShell. Командлет
Get-MsalTokenзапускает запрос проверки подлинности Microsoft Entra, как показано в следующем примере. Укажите ту же учетную запись, указанную в выходных данных консоли на шаге 2. После успешного входа PowerShell помещает токен доступа в буфер обмена.Кроме того, может потребоваться дать согласие, чтобы разрешить приложению доступ к API MIP при работе под учётной записью, под которой выполнен вход. Это происходит, когда регистрация приложения Microsoft Entra не предоставляется предварительно (как описано в разделе "Настройка и настройка пакета SDK MIP") или вы входите с учетной записью из другого клиента (отличного от того, где зарегистрировано приложение). Нажмите кнопку "Принять" , чтобы записать свое согласие.
После вставки маркера доступа в запрос из шага 2 выходные данные консоли должны отображать шаблоны защиты, аналогичные следующему примеру:
*** 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 . . .Примечание.
Скопируйте и сохраните идентификатор одного или нескольких шаблонов защиты (например,
f42a3342-8706-4288-bd31-ebb85995028z), так как он понадобится вам в следующем кратком руководстве.
Устранение неполадок
Проблемы во время выполнения приложения C++
| Сводка | Сообщение об ошибке | Решение |
|---|---|---|
| Недопустимый токен доступа |
Произошло исключение... неправильный или истек срок действия токена доступа? Сбой вызова API: profile_add_engine_async. Ошибка: [class mip::PolicySyncException] Не удалось получить политику, запрос завершился ошибкой с кодом состояния HTTP: 401, x-ms-diagnostics: [2000001;reason="Не удается разобрать токен OAuth, отправленный с запросом.";error_category="invalid_token"], correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]' C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (процесс 29924) завершился с кодом 0. Нажмите любую клавишу, чтобы закрыть это окно. . . |
Если проект успешно выполняется, но вы видите такие выходные данные, как на изображении слева, скорее всего, в вашем методе AcquireOAuth2Token() используется недействительный или истекший токен. Вернитесь к шагу создания скрипта PowerShell для генерации маркеров доступа, снова создайте маркер доступа, обновите AcquireOAuth2Token(), затем перестройте и протестируйте заново. Вы также можете изучить и проверить токен и его утверждения с помощью одностраничного веб-приложения jwt.ms. |
Дальнейшие действия
Теперь, когда вы узнали, как перечислить шаблоны защиты, доступные для пользователя, прошедшего проверку подлинности, попробуйте следующее краткое руководство.
- Ознакомьтесь с примером MIP Protection SDK для C++ на GitHub.