Поделиться через


Функция DRMCreateIssuanceLicense (msdrm.h)

[Пакет SDK AD RMS с использованием функциональных возможностей, предоставляемых клиентом в Msdrm.dll, доступен для использования в Windows Server 2008, Windows Vista, Windows Server 2008 R2, Windows 7, Windows Server 2012 и Windows 8. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте пакет SDK 2.1 служб Active Directory Rights Management Services, который использует функциональные возможности, предоставляемые клиентом в Msipc.dll.]

Функция DRMCreateIssuanceLicense создает лицензию на выдачу с нуля, на основе шаблона или подписанной лицензии на выдачу.

Синтаксис

DRMEXPORT HRESULT UDAPICALL DRMCreateIssuanceLicense(
  [in]           SYSTEMTIME   *pstTimeFrom,
  [in]           SYSTEMTIME   *pstTimeUntil,
  [in]           PWSTR        wszReferralInfoName,
  [in]           PWSTR        wszReferralInfoURL,
  [in, optional] DRMPUBHANDLE hOwner,
  [in]           PWSTR        wszIssuanceLicense,
  [in]           DRMHANDLE    hBoundLicense,
  [out]          DRMPUBHANDLE *phIssuanceLicense
);

Параметры

[in] pstTimeFrom

Время действия лицензии в формате UTC. Если это значение равно NULL, параметр pstTimeUntil также должен иметь значение NULL. Если оба параметра не имеют значения NULL, E_DRM_INVALID_TIMEINFO возвращается, если время диапазона логически несогласованно. Например, pstTimeFrom не может быть позже pstTimeUntil.

[in] pstTimeUntil

Время окончания срока действия лицензии в формате UTC. Если это значение равно NULL, параметр pstTimeFrom также должен иметь значение NULL. Если оба параметра не имеют значения NULL, E_DRM_INVALID_TIMEINFO возвращается, если время диапазона логически несогласованно. Например, pstTimeFrom не может быть позже pstTimeUntil.

[in] wszReferralInfoName

Получение нерабочих лицензий не поддерживается; Присвойте этому параметру значение NULL.

Для клиента служб управления правами (RMS) 1.0 этот параметр является указателем на строку Юникода, завершающуюся null, которая содержит отображаемое имя URL-адреса в wszReferralInfoURL. Этот параметр является необязательным и может иметь значение NULL.

[in] wszReferralInfoURL

Получение нерабочих лицензий не поддерживается; Присвойте этому параметру значение NULL.

Для клиента RMS 1.0 этот параметр является указателем на строку Юникода, завершающуюся null, которая содержит URL-адрес, по которому приложение должно отправиться для запроса лицензии на содержимое нерабочим образом. Это должна быть HTML-страница, на которую размещается элемент ActiveX. Этот параметр является необязательным и может иметь значение NULL.

[in, optional] hOwner

Дескриптор для пользователя, которому принадлежит лицензия на выдачу. Дескриптор создается путем вызова функции DRMCreateUser . Владелец идентифицируется в узле Владелец в лицензии на выдачу XrML. Этот параметр является необязательным и может иметь значение NULL.

Не путайте владельца лицензии на выдачу с пользователем, которому предоставлено право ВЛАДЕЛЬЦА. Владение лицензией на выдачу не предоставляет автоматически никаких прав на использование или изменение содержимого. Указание значения для необязательного параметра hOwner просто позволяет приложению идентифицировать владельца или автора содержимого. Идентификатор добавляется в качестве метаданных в лицензию. С другой стороны, право OWNER предоставляет пользователю право на осуществление всех прав, содержащихся в лицензии. Предоставление себе (или кому-либо еще) права ВЛАДЕЛЬЦА должно быть сделано явным образом с помощью DRMAddRightWithUser. Ноль, один или несколько пользователей могут быть предоставлены права ВЛАДЕЛЬЦА, срок действия которого никогда не истекает.

Если этот параметр указан, владелец лицензии на выдачу добавляется в качестве метаданных под <узлом WORK> лицензии.

<WORK>
  <OBJECT type="contentType">
    <ID type="contentIdType">contentId</ID>
    <NAME>contentName</NAME>
  </OBJECT>
  <METADATA>
    <OWNER>
      <OBJECT>
        <ID type="Windows"/>
        <NAME>david@contoso.com</NAME>
      </OBJECT>
    </OWNER>
  </METADATA>
  ...

Если оно предоставлено, право OWNER добавляется в качестве атрибута <элемента RIGHT> в лицензии XrML.

<WORK>
  ...
  <RIGHTSGROUP name="MainRights">
    <RIGHTSLIST>
      <VIEW>
        ...
      </VIEW>
      <RIGHT name="OWNER">
        <CONDITIONLIST>
          ...
        </CONDITIONLIST>
      </RIGHT>
    </RIGHTSLIST>
  </RIGHTSGROUP>
Примечание В случае, когда вы задаете hOwner для автора лицензии и используете шаблон, в котором вы проверка поле Предоставить владельцу (автору) полный доступ без истечения срока действия проверка, автор лицензии может впоследствии получить лицензию конечного пользователя с правами владельца. Дополнительные сведения см. в разделе Основные сведения о правах XrML .
 

[in] wszIssuanceLicense

Указатель на строку Юникода, завершающуюся null, которая содержит шаблон лицензии на выдачу или подписанную лицензию на выдачу. Для получения шаблона можно вызвать функцию DRMGetIssuanceLicenseTemplate . Если этот параметр имеет значение NULL, создается лицензия на выдачу.

[in] hBoundLicense

Дескриптор привязанной лицензии, содержащей право VIEWRIGHTSDATA, EDITRIGHTSDATA или OWNER, которое позволяет приложению повторно использовать данные прав или повторно использовать ключ содержимого из предыдущей лицензии на выдачу. Этот параметр является необязательным и может иметь значение NULL. Дополнительные сведения о правах см. в разделе Основные сведения о правах XrML.

Примечание Если вы хотите создать новую лицензию на выдачу, но вы хотите использовать ключ содержимого из исходной подписанной лицензии на выдачу, убедитесь, что hBoundLicense , передаваемая в DRMCreateIssuanceLicense , привязана к правому OWNER или EDITRIGHTSDATA. При последующем вызове DRMGetSignedIssuanceLicense передайте дескриптор лицензии на выдачу, полученный из DRMCreateIssuanceLicense , и флаг DRM_REUSE_KEY, чтобы повторно использовать ключ содержимого.
 

[out] phIssuanceLicense

Указатель на DRMPUBHANDLE , получающий дескриптор новой лицензии на выдачу.

Возвращаемое значение

Если функция завершается успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Возможные значения включают, помимо прочего, значения из следующего списка. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Комментарии

Лицензия на выдачу — это список прав, пользователей, метаданных и других сведений, указывающих, как конкретный пользователь на определенном компьютере может использовать указанное содержимое. Эта лицензия на выдачу должна быть подписана с помощью функции DRMGetSignedIssuanceLicense или метода SOAP AcquireIssuanceLicense . Полученная подписанная лицензия на выдачу предоставляется потенциальному пользователю, который затем должен запросить лицензию конечного пользователя , вызвав функцию DRMAcquireLicense . Приложение может запросить лицензию конечного пользователя от имени другого пользователя с помощью метода SOAP AcquirePreLicense . Только лицензия конечного пользователя позволяет приложению использовать предоставленные права.

Эта функция позволяет создавать лицензии тремя разными способами.

значение wszIssuanceLicense Значение hBoundLicense Описание
Неподписаная лицензия на выдачу из файла или дескриптор лицензии на выдачу, переданный в DRMGetIssuanceLicenseTemplate NULL Используйте для создания лицензии на выдачу на основе шаблона. Новая лицензия на выдачу содержит сведения из старой лицензии на выдачу (список следует за этой таблицей), но не использует повторно ключ содержимого.
Подписанная лицензия на выдачу Дескриптор лицензии, привязанной правами OWNER или VIEWRIGHTSDATA Используйте для повторного использования сведений о правах (список следует за этой таблицей).
NULL NULL Используйте для создания лицензии на выдачу с нуля. Он не включает пользователей, права, метаданные или политики.
 

При передаче лицензии на выдачу (подписанной или неподписаной) повторно используется следующие данные:

Так как получение нерабочей лицензии не поддерживается, wszReferralInfoName и wszReferralInfoURL должны иметь значение NULL.

Для клиента RMS 1.0 точка реферальной ссылки, описанная wszReferralInfoName и wszReferralInfoURL , используется в качестве URL-адреса резервного копирования, если вызов URL-адреса, указанного в заголовке лицензии, завершается сбоем. Этот метод позволяет вызывающей объекту определить отображаемое имя и URL-адрес сайта, обрабатывающего нерабочие запросы лицензии для содержимого.

Параметр hBoundLicense позволяет приложению повторно использовать данные из существующей лицензии на выдачу. Для этого приложение публикации создает право VIEWRIGHTSDATA и предоставляет его любому приложению, которому разрешено повторно использовать сведения о лицензии на выдачу. Однако, поскольку для этого требуется привязка к лицензии, которая является задачей, которая не может быть выполнена без использования защищенного хранилища, для серверных приложений, не использующих защищенное хранилище, это значение должно иметь значение NULL .

Цель URL-адреса не может быть проверена какой-либо частью клиента или системы служб Active Directory Rights Management. Злоумышленник может включить вредоносный URL-адрес в лицензию на выдачу, хотя создателю лицензии на выдачу потребуется действующая лицензированная система служб Active Directory Rights Management.

Одна из проблем, которая может возникнуть при создании лицензий на выдачу с коротким сроком действия, — проблема неравномерного распределения часов. Неравномерное распределение часов — это когда часы компьютера публикации и компьютерные часы конечного пользователя не выровнены точно. Неравномерное распределение часов может привести к сбою попыток подписывания лицензии на выдачу. Дополнительные сведения см. в разделе Неравномерное распределение часов.

Вызовите DRMClosePubHandle , чтобы закрыть дескриптор лицензии на выдачу, созданный путем вызова этой функции.

Требования

   
Целевая платформа Windows
Header msdrm.h
Библиотека Msdrm.lib
DLL Msdrm.dll

См. также раздел

Функции AD RMS

Создание и использование лицензий выдачи