Client Info Message
Client Info Message is a JSON data structure designed to hold information about a DRM License Request.
Client Info Message is returned by Axinom DRM License Service as a payload of a Axinom DRM License Service Message inside a custom HTTP header X-AxDRM-Message
if the return_client_info
field in the Entitlement Message was set to true
.
Read Device Specific Restriction to understand how a Client Info Message can be used.
This document describes the deprecated data structure. For the latest version read License Request Info Message.
Structureβ
The following shows the structure of the Client Info Message, with examples for each DRM.
{
"type": "playready_client_info_message",
"device_id": "7AB93931-F37D-4881-8D50-FD6E91579BCC"
}
{
"type": "widevine_client_info_message",
"device_id": "2B32BEEA-A1FD-4A47-AFFD-636221932A9B",
"client_token": "12F063B4-7C6C-4C1B-A589-B563A7B46CA8"
}
{
"type": "fairplay_client_info_message",
"device_id": "86D4732D-1927-4BFE-9494-18F2624B2B92",
"session_id": "C4927EB6-5AFE-4103-B065-0D4793C4C952",
"playback_state": "new_session",
"streaming_indicator": "requesting_device",
"supported_license_protocol_versions": [
"1",
"2"
],
"license_protocol_version": "1"
}
Common Client Infoβ
The following client info is supported in case of all DRMs.
typeβ
Indicates the type of a Client Info Message.
Required | Yes. |
Data type | String. |
Supported values | * "playready_client_info_message" * "widevine_client_info_message" * "fairplay_client_info_message" |
The exact type of a Client Info Message returned along with the License Response by the Axinom DRM License Service depends on which licensing endpoint was connected to. In case of the PlayReady endpoint, it is a PlayReady Client Info Message. In case of the Widevine endpoint, it is a Widevine Client Info Message. In case of the FairPlay endpoint, it is a FairPlay Client Info Message.
device_idβ
Indicates the ID of the device that made the License Request.
Required | Yes (optional for Widevine). |
Data type | String. |
Supported values | Any string representation of a valid GUID in the 00000000-0000-0000-0000-000000000000 format. |
In case of PlayReady and FairPlay, the device ID is always obtainable. However, in case
of Widevine, this is not always possible. On some devices and platforms, for example
Google Chrome on desktop devices, Widevine is not able to uniquely identify the device.
In such a case, the device_id
field is missing from the Client Info Message. See
Additional Information for recommendations on executing device ID based restrictions.
DRM-Specific Client Infoβ
The following client info is unique to a specific DRM.
Widevineβ
client_tokenβ
Contains the client token, which the client is currently using. In the absence of an existing token, it contains a new token, generated by the license service and sent to the client in the license. This token persists between playback sessions and can be used to uniquely identify the client (e.g. desktop browser). If the client doesnβt support client tokens, this field is missing.
Required | No. |
Data type | String. |
Supported values | Any string representation of a valid GUID in the 00000000-0000-0000-0000-000000000000 format. |
FairPlayβ
session_idβ
Contains the ID of the current playback session. This remains constant over all license requests made by the player (e.g. license renewal requests) in a specific playback session. This is only supported by iOS 9 and later.
Required | No. |
Data type | String. |
Supported values | Any string representation of a valid GUID in the 00000000-0000-0000-0000-000000000000 format. |
playback_stateβ
Indicates the state of the playback when the license request was created. This can be used to determine, e.g., if the license request is for a new playback session or for the renewal of an existing session. This is only supported by iOS 9 and later.
Required | No. |
Data type | String. |
Supported values | * "new_session" - a new playback session has been opened and the device requires a license to start playback * "license_renewal_with_valid_content_key_required" - device is playing media, but requires a renewed license that contains a valid content key * "license_renewal_required" - device is playing media, but requires a renewed license (valid content key is not required) * "session_stopped" - playback session is halted due to an error state or a lack of session ID |
streaming_indicatorβ
Indicates whether the playback occurs on the requesting device or content is streamed to an external device (e.g. AirPlay or AV adapter).
Required | Yes. |
Data type | String. |
Supported values | * "airplay" - device streams content over AirPlay to Apple TV for playback * "av_adapter" - device streams content to an Apple digital AV adapter for playback * "requesting_device" - playback occurs on the device that sends the license request |
supported_license_protocol_versionsβ
Indicates which FairPlay Streaming protocol versions the playback device supports.
Required | Yes. |
Data type | Array of strings (for example ["1", "2"]). |
Supported values | Any array of strings. |
license_protocol_versionβ
Indicates the version of the FairPlayStreaming protocol that is used for current
transaction. This is chosen by the playback device as the most recent version that both
the playback device and the license service support, where the version supported by the
license service is determined by the "KEYFORMATVERSIONS"
parameter in the HLS playlist.
Required | Yes. |
Data type | String (for example "1"). |
Supported values | Any string. |
Additional Informationβ
Recommendations for Executing Device ID Based Restrictionsβ
The recommended way of executing device ID based restrictions is to use Axinom DRM License Service in the Proxy Mode. Proxy Mode is anyway strongly advised to obtain client info. In the Proxy Mode, the device ID based restriction decisions can be made upon receiving the Client Info Message along with the license response. If the device ID in the received Client Info Message does not match the expected one, the License Proxy may decide not to return the license to the client.
Another way of executing device ID based restrictions is to use the device_id
field in the DRM-specific sections of the Entitlement Message. In this case, the Axinom
DRM License Service makes the decision whether to grant a license or not. Keep in mind
that when using the Entitlement Message functionality for device ID based restrictions,
the device_id
field has to be specified in the DRM-specific sections for all DRM
systems for which this restriction is desired. This is due to the fact that device IDs
differ across DRM systems for the same device. This way of executing device ID based
restrictions is useful when the Proxy Mode is not used. This assumes that device IDs
were obtained previously using the Proxy Mode.