Практическое руководство. Настройка приложения-службы для работы с облачными службами RMS
Важно!
Версии пакета SDK службы microsoft Rights Management, выпущенные до марта 2020 г., устарели; Для использования выпуска за март 2020 г. необходимо обновить приложения, использующие более ранние версии. Подробные сведения см. в уведомлении об устаревании.
Для пакета SDK службы Microsoft Rights Management не планируется никаких дополнительных улучшений. Настоятельно рекомендуем внедрить пакет SDK для Microsoft Information Protection для служб классификации, маркировки и защиты.
В этой статье описаны действия по настройке приложения-службы для начала использования служб управления правами Azure. Дополнительные сведения см. в статье Начало работы со службой Azure Rights Management.
Важно
Чтобы использовать приложение-службу с пакетом SDK 2.1 для службы RMS с Azure RMS, вам потребуется создать собственные клиенты. Дополнительные сведения см. в статье "Требования Azure RMS: облачные подписки, поддерживающие Azure RMS"
Предварительные требования
- Установленный и настроенный пакет SDK 2.1 для службы RMS. Дополнительные сведения см. в статье Начало работы.
- Вам необходимо создать удостоверение службы ACS с помощью параметра симметричного ключа (или иным способом) и записать полученные данные ключа.
Подключение к службе управления правами Azure
Вызовите IpcInitialize.
Установите свойство IpcSetGlobalProperty.
int mode = IPC_API_MODE_SERVER; IpcSetGlobalProperty(IPC_EI_API_MODE, &(mode));
Примечание Дополнительные сведения см. в разделе "Настройка режима безопасности API"
Ниже приведены шаги по созданию экземпляра структуры IPC_PROMPT_CTX с помощью элемента pcCredential (IPC_CREDENTIAL), заполненного сведениями о подключении из службы Azure Rights Management.
Используйте сведения из создания удостоверения службы симметричного ключа (см. предварительные требования, перечисленные ранее в этом разделе), чтобы задать параметры wszServicePrincipal, wszBposTenantId и cbKey при создании экземпляра структуры IPC_CREDENTIAL_SYMMETRIC_KEY .
Примечание. Из-за имеющейся в нашей службе обнаружения проблемы невозможно указать учетные данные из других регионов, если вы находитесь не в Северной Америке. В этом случае вам потребуется указать прямые URL-адреса клиентов. Это делается с помощью параметра pConnectionInfo , типа IPC_CONNECTION_INFO, в функциях IpcGetTemplateList или IpcGetTemplateIssuerList.
Создание симметричного ключа и сбор необходимой информации
Инструкции по созданию симметричного ключа
- Установите помощник по входу в Microsoft Online Services.
- Установите модуль PowerShell для Azure AD.
Примечание. Для запуска командлетов PowerShell необходимо быть администратором клиента.
Запустите PowerShell и выполните следующие команды, чтобы создать ключ.
Import-Module MSOnline
Connect-MsolService
(введите свои учетные данные администратора)New-MsolServicePrincipal
(введите отображаемое имя)После создания симметричного ключа будут выведены сведения о ключе, включая сам ключ и значение параметра AppPrincipalId.
The following symmetric key was created as one was not supplied ZYbF/lTtwE28qplQofCpi2syWd11D83+A3DRlb2Jnv8= DisplayName : RMSTestApp ServicePrincipalNames : {7d9c1f38-600c-4b4d-8249-22427f016963} ObjectId : 0ee53770-ec86-409e-8939-6d8239880518 AppPrincipalId : 7d9c1f38-600c-4b4d-8249-22427f016963
Инструкции по получению TenantBposId и URL-адресов
Установите модуль PowerShell для Azure RMS.
Запустите PowerShell и выполните следующие команды, чтобы получить конфигурацию RMS для клиента.
Import-Module AIPService
Connect-AipService
(введите свои учетные данные администратора)Get-AipServiceConfiguration
Создайте экземпляр IPC_CREDENTIAL_SYMMETRIC_KEY и задайте несколько элементов.
// Create a key structure. IPC_CREDENTIAL_SYMMETRIC_KEY symKey = {0}; // Set each member with information from service creation. symKey.wszBase64Key = "your service principal key"; symKey.wszAppPrincipalId = "your app principal identifier"; symKey.wszBposTenantId = "your tenant identifier";
Дополнительные сведения см. в разделе IPC_CREDENTIAL_SYMMETRIC_KEY.
Создайте экземпляр структуры IPC_CREDENTIAL , содержащей экземпляр IPC_CREDENTIAL_SYMMETRIC_KEY .
Примечание. Элементам connectionInfo присваиваются значения URL-адресов, полученные при предыдущем вызове
Get-AipServiceConfiguration
. Они приведены в этом примере с именами соответствующих полей.// Create a credential structure. IPC_CREDENTIAL cred = {0}; IPC_CONNECTION_INFO connectionInfo = {0}; connectionInfo.wszIntranetUrl = LicensingIntranetDistributionPointUrl; connectionInfo.wszExtranetUrl = LicensingExtranetDistributionPointUrl; // Set each member. cred.dwType = IPC_CREDENTIAL_TYPE_SYMMETRIC_KEY; cred.pcCertContext = (PCCERT_CONTEXT)&symKey; // Create your prompt control. IPC_PROMPT_CTX promptCtx = {0}; // Set each member. promptCtx.cbSize = sizeof(IPC_PROMPT_CTX); promptCtx.hwndParent = NULL; promptCtx.dwflags = IPC_PROMPT_FLAG_SILENT; promptCtx.hCancelEvent = NULL; promptCtx.pcCredential = &cred;
Определение шаблона с последующим шифрованием
Выберите шаблон, используемый для шифрования. Вызовите IpcGetTemplateList, передавая тот же экземпляр IPC_PROMPT_CTX.
PCIPC_TIL pTemplates = NULL; IPC_TEMPLATE_ISSUER templateIssuer = (pTemplateIssuerList->aTi)[0]; hr = IpcGetTemplateList(&(templateIssuer.connectionInfo), IPC_GTL_FLAG_FORCE_DOWNLOAD, 0, &promptCtx, NULL, &pTemplates);
В шаблоне, приведенном ранее в этом разделе, вызовите IpcfEncrcyptFile, передавая тот же экземпляр IPC_PROMPT_CTX.
Пример использования IpcfEncrcyptFile:
LPCWSTR wszContentTemplateId = pTemplates->aTi[0].wszID; hr = IpcfEncryptFile(wszInputFilePath, wszContentTemplateId, IPCF_EF_TEMPLATE_ID, IPC_EF_FLAG_KEY_NO_PERSIST, &promptCtx, NULL, &wszOutputFilePath);
Пример использования IpcfDecryptFile:
hr = IpcfDecryptFile(wszInputFilePath, IPCF_DF_FLAG_DEFAULT, &promptCtx, NULL, &wszOutputFilePath);
Теперь вы выполнили все шаги, необходимые для начала использования службы управления правами Azure в вашем приложении.
Связанные темы
- Начало работы с Azure Rights Management
- Начало работы с RMS SDK 2.1
- Создание удостоверения службы через ACS
- IpcSetGlobalProperty
- IpcInitialize
- IPC_PROMPT_CTX
- IPC_CREDENTIAL
- IPC_CREDENTIAL_SYMMETRIC_KEY
- IpcGetTemplateIssuerList
- IpcGetTemplateList
- IpcfDecryptFile
- IpcfEncrcyptFile
- IpcCreateLicenseFromScratch
- IpcCreateLicenseFromTemplateID