# \[DRM\]\[FairPlay\] Bitmovin Player + Axinom License Server

**URL:** <https://community.bitmovin.com/t/drm-fairplay-bitmovin-player-axinom-license-server/3228>\
**Category:** Support\
**Tags:** bitmovin-player, bitmovin\
**Created:** [August 22, 2024, 1:20pm UTC](https://community.bitmovin.com/t/drm-fairplay-bitmovin-player-axinom-license-server/3228 "2024-08-22T13:20:19Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![Lukasz.Bajorski](https://avatars.discourse-cdn.com/v4/letter/l/91b2a8/32.png) [@Lukasz.Bajorski](https://community.bitmovin.com/u/Lukasz.Bajorski)\
**Post date:** [September 12, 2024, 10:31am UTC](https://community.bitmovin.com/t/drm-fairplay-bitmovin-player-axinom-license-server/3228/5 "2024-09-12T10:31:53Z")

</div>

Hi Ronald,

I made Web work with the much appreciated help from Axinom Customer Support Team.

Posting here for future reference. Perhaps you can also add it to the official Bitmovin documentation as one of the examples of integration.

```auto
fairplay: {
                    LA_URL: LICENSE_SERVER_PROD_FAIRPLAY,
                    headers: {
                        'X-AxDrm-Message': drmtoken,
                        'Content-type': 'application/octet-stream'
                    },
                    certificateURL: FAIRPLAY_CERTIFICATE,
                    prepareContentId: (uri) => {
                        console.log("prepareContentId: ", uri);

                        return uri.substring(uri.indexOf("skd"));
                    },
                    prepareMessage: (event) => {
                        console.log("prepareMessage: ", event);

                        return new Blob([event.message], { type: 'application/octet-binary' });
                    },
                    prepareLicenseAsync: (ckc) => {
                        console.log("prepareLicense: ", ckc);

                        return new Promise((resolve, reject) => {
                            const reader = new FileReader();
                            reader.addEventListener('loadend', () => resolve(new Uint8Array(reader.result)));
                            reader.addEventListener('error', () => reject(reader.error));
                            reader.readAsArrayBuffer(ckc);
                        });
                    },
                    licenseResponseType: bitmovin.player.HttpResponseType.BLOB,
                    useUint16InitData: true

```

Cheers,  
Łukasz

---

_[View the full topic](https://community.bitmovin.com/t/drm-fairplay-bitmovin-player-axinom-license-server/3228)._
