How-to: enable document tracking and revocation
This topic covers the basic guidance for implementing document tracking of content as well as example code for metadata updates and for creating a Track Usage button for your app.
Note
Document tracking only works only with Azure RMS and does not currently work with AD RMS.
Steps to implement document tracking
Steps 1 and 2 enable the document to be tracked. Step 3 enables your app users to reach the document tracking site in order to track and revoke your protected documents.
- 1. Add document tracking metadata
2. Register the document with the RMS service
3. Add **Track Usage** button to your app
The implementation details for these steps follow.
1. Add document tracking metadata
Document tracking is a feature of the Rights Management system. By adding specific metadata during the document protection process, a document can be registered with the tracking service portal which then provides several options for tracking.
Use these APIs to add/update a content license with document tracking metadata.
-
We expect that you will set all of the metadata properties. Here they are, listed by type.
For more information, see License metadata property types.
IPC_MD_CONTENT_PATH
Use to identify the tracked document. In cases where a full path is not possible, just provide the file name.
IPC_MD_CONTENT_NAME
Use to identify the tracked document name.
IPC_MD_NOTIFICATION_TYPE
Use to specify when notification will be sent. For more information, see Notification type.
IPC_MD_NOTIFICATION_PREFERENCE
Use to specify the type of notification. For more information, see Notification preference.
IPC_MD_DATE_MODIFIED
We suggest that you set this date each time the user clicks Save.
IPC_MD_DATE_CREATED
Use to set the origination date of the file.
Use the appropriate one of these APIs to add the metadata to your file or stream.
Lastly, use this API to register your tracked document with the tracking system.
2. Register the document with the RMS service
Here's a code snippet showing an example of setting document tracking metadata and the call to register with the tracking system.
HRESULT hr = S_OK;
LPCWSTR wszOutputFile = NULL;
wstring wszWorkingFile;
IPC_LICENSE_METADATA md = {0};
md.cbSize = sizeof(IPC_LICENSE_METADATA);
md.dwNotificationType = IPCD_CT_NOTIFICATION_TYPE_ENABLED;
md.dwNotificationPreference = IPCD_CT_NOTIFICATION_PREF_DIGEST;
//file origination date, current time for this example
md.ftDateCreated = GetCurrentTime();
md.ftDateModified = GetCurrentTime();
LOGSTATUS_EX(L"Encrypt file with official template...");
hr =IpcfEncryptFileWithMetadata( wszWorkingFile.c_str(),
m_wszTestTemplateID.c_str(),
IPCF_EF_TEMPLATE_ID,
0,
NULL,
NULL,
&md,
&wszOutputFile);
/* This will contain the serialized license */
PIPC_BUFFER pSerializedLicense;
/* the context to use for the call */
PCIPC_PROMPT_CTX pContext;
wstring wstrContentName(“MyDocument.txt”);
bool sendLicenseRegistrationNotificationEmail = FALSE;
hr = IpcRegisterLicense( pSerializedLicense,
0,
pContext,
wstrContentName.c_str(),
sendLicenseRegistrationNotificationEmail);
3. Add a Track Usage button to your app
Adding a Track Usage UI item to your app is as simple as using one of the following URL formats:
Using Content ID
Get the content ID by using IpcGetLicenseProperty or IpcGetSerializedLicenseProperty if the license is serialized and use the license property IPC_LI_CONTENT_ID. For more information, see License property types.
With the ContentId and Issuer metadata, use the following format:
https://track.azurerms.com/#/{ContentId}/{Issuer}
Example -
https://track.azurerms.com/#/summary/05405df5-8ad6-4905-9f15-fc2ecbd8d0f7/janedoe@microsoft.com
If you don’t have access to that metadata (i.e. you are examining the unprotected version of the document), you can use the Content_Name in the following format:
https://track.azurerms.com/#/?q={ContentName}
Example -
https://track.azurerms.com/#/?q=Secret!.txt
The client simply needs to open a browser with the appropriate URL. The RMS Document Tracking portal will handle authentication and any required redirection.
Related topics