<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://docs.axinom.com/blog</id>
    <title>Axinom Mosaic Blog</title>
    <updated>2026-04-14T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://docs.axinom.com/blog"/>
    <subtitle>Axinom Mosaic Blog</subtitle>
    <icon>https://docs.axinom.com/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[DRM Beyond the Player - from the License Server's Perspective]]></title>
        <id>https://docs.axinom.com/blog/drm-beyond-the-player</id>
        <link href="https://docs.axinom.com/blog/drm-beyond-the-player"/>
        <updated>2026-04-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DRM failures surface at the player, but the root causes often live on the license server side. A technical look at security level enforcement, multi-key encryption, token lifecycle, and concurrent stream limiting - from the perspective of what the backend needs to get right.]]></summary>
        <content type="html"><![CDATA[<p>Many discussions about DRM complexity focus on the player side: device fragmentation, codec support, CDM quirks across platforms. That's fair. The player is where things visibly break.</p>
<p>But every pain point on the player side has a counterpart on the license server side. Security level enforcement, multi-key encryption strategy, token lifecycle, session management - these aren't just player concerns. They're architectural decisions that span the entire chain from entitlement service to license server to CDM. And when the server side isn't designed with the same rigor as the player side, the edge cases multiply.</p>
<p>This article walks through the DRM challenges that teams consistently underestimate, from the perspective of what the license service needs to get right so the player <em>can</em> get it right.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security-levels-are-a-license-server-concern-not-just-a-device-property">Security Levels Are a License Server Concern, Not Just a Device Property<a href="https://docs.axinom.com/blog/drm-beyond-the-player#security-levels-are-a-license-server-concern-not-just-a-device-property" class="hash-link" aria-label="Direct link to Security Levels Are a License Server Concern, Not Just a Device Property" title="Direct link to Security Levels Are a License Server Concern, Not Just a Device Property" translate="no">​</a></h2>
<p>Widevine's security levels (L1, L2, L3) determine whether decryption happens in hardware or software. L1 uses a hardware-backed Trusted Execution Environment and is required by most studios for HD and UHD content. L3 is software-only and typically not authorized to be used for HD content.</p>
<p>The license server has its role to play. A properly configured DRM backend doesn't just hand out keys; it enforces <strong>which</strong> keys a device is entitled to receive based on its reported security level. In the Axinom DRM entitlement message, you can attach per-key usage policies that require hardware-backed Content Decryption Modules (CDM) for HD and UHD keys while allowing software-level CDMs to access only the SD key. The license server becomes the enforcement point: a device that reports L3 simply never receives the HD content key, regardless of what the player requests.</p>
<p>This is where multi-key encryption and license policy work hand in hand. Without both, you're relying on the player alone to make the right access control decisions - and in a security model, that's not a position you want to be in.</p>
<p>Additionally, Axinom DRM allows you to enforce Verified Media Path (VMP) verification levels and reject requests from tampered platforms, adding another layer of assurance that the CDM making the request is legitimate.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-key-encryption-is-ultimately-a-license-server-design-decision">Multi-Key Encryption Is Ultimately a License Server Design Decision<a href="https://docs.axinom.com/blog/drm-beyond-the-player#multi-key-encryption-is-ultimately-a-license-server-design-decision" class="hash-link" aria-label="Direct link to Multi-Key Encryption Is Ultimately a License Server Design Decision" title="Direct link to Multi-Key Encryption Is Ultimately a License Server Design Decision" translate="no">​</a></h2>
<p>The choice between single-key and multi-key encryption is often framed as a packaging decision. It is, but the consequences play out entirely at the license server.</p>
<p>With <strong>single-key encryption</strong>, every rendition in the ABR ladder shares the same content key. Anyone who obtains a license, at any security level, gets the key that also decrypts your 4K HDR stream. The license server has no way to differentiate.</p>
<p>With <strong>multi-key encryption</strong>, you assign separate keys to different quality tiers (SD, HD, UHD) and to audio tracks. Now the entitlement service can make granular decisions: a premium subscriber on a hardware-secured device gets all keys; a free-tier user on a browser gets only the SD key; and critically, a compromised software CDM that leaks a key only exposes your lowest-value content.</p>
<p>This is why best practice calls for unique encryption keys not just per asset, but per video profile and audio track within an asset. If audio and video share a key, an attacker who breaks the (typically less protected) audio decryption path gets the video key for free. Separate keys for separate tracks close that gap.</p>
<p>From the Entitlement Message, this translates to multiple keys each mapped to a named usage policy with DRM-technology-specific rules for Widevine, PlayReady, and FairPlay, covering HDCP requirements, output protections, minimum device security levels, and more. The license server evaluates these policies at request time and delivers only what the device and user are authorized to receive.</p>
<p>Most teams don't think about this architecture until a studio audit forces the conversation. By then, re-encrypting an entire content library with multi-key is a significant effort that could have been avoided with the right design upfront.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="token-lifetime-and-mid-session-license-requests">Token Lifetime and Mid-Session License Requests<a href="https://docs.axinom.com/blog/drm-beyond-the-player#token-lifetime-and-mid-session-license-requests" class="hash-link" aria-label="Direct link to Token Lifetime and Mid-Session License Requests" title="Direct link to Token Lifetime and Mid-Session License Requests" translate="no">​</a></h2>
<p>JWT-based authorization is standard practice: the client obtains a token from the Entitlement Service and presents it with each license request. In simple VOD playback this works seamlessly - one token, one license request, done.</p>
<p>The assumption that licenses are requested only once at session start breaks in several common scenarios:</p>
<ul>
<li class=""><strong>Key rotation</strong> requires new licenses mid-session as keys change, very common in live streams.</li>
<li class=""><strong>DRM-based concurrent stream limiting</strong> requires licenses to be renewed at short, regular intervals - the server uses these renewals to monitor active sessions.</li>
<li class=""><strong>ABR switching</strong>, especially in case of FairPlay, can require a new license when changing quality tiers.</li>
<li class=""><strong>Multi-period assets</strong> trigger license requests at period boundaries.</li>
</ul>
<p>If the token has already expired at the moment one of these mid-session requests fires, playback stalls - often silently, with no clear error surfaced to the user. The player must track token lifetime, handle renewal proactively, and stay in sync with rotation boundaries for live streams. This is non-trivial complexity pushed down to every player integration.</p>
<p>A cleaner design is to implement the Entitlement Service as a <strong>proxy</strong> that stands in as the license server from the player's perspective. The flow changes fundamentally: the CDM creates a license request and the player sends it directly to the proxy - no token attached, because the player never deals with tokens at all. The proxy receives the request, performs its authorization checks, mints a fresh Entitlement Message token on the fly, and forwards both the license request and the token to the actual license server. The license response travels back through the proxy to the player. Token lifetime is entirely a server-side concern; the player just sees a license endpoint that always works. Silent stalls from expired tokens are eliminated by design.</p>
<p>Token design principles still matter on the server side: tokens should be short-lived, measured in seconds or a few minutes rather than hours, and configured for single use to prevent replay attacks. Axinom DRM's <code>prevent_drm_message_reuse</code> setting enforces exactly this - each token can only be redeemed once per entitled key. Because the proxy generates a fresh token per request, honoring these constraints requires no coordination with the player at all.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-enforced-concurrent-stream-limiting">DRM-Enforced Concurrent Stream Limiting<a href="https://docs.axinom.com/blog/drm-beyond-the-player#drm-enforced-concurrent-stream-limiting" class="hash-link" aria-label="Direct link to DRM-Enforced Concurrent Stream Limiting" title="Direct link to DRM-Enforced Concurrent Stream Limiting" translate="no">​</a></h2>
<p>Concurrent stream limiting is one of the most common content protection requirements, and one of the most commonly implemented incorrectly. The typical approach - tracking active sessions in a database and checking at playback start - is straightforward to bypass: intercept the API call, reuse a stale session token, or simply open a second tab. Application-layer enforcement is only as strong as the application layer.</p>
<p>DRM-based CSL is a fundamentally different model. The license server issues short-duration licenses that must be regularly renewed. Each renewal is a heartbeat: the player requests a license extension, and the Axinom DRM license server monitors how many active sessions the user currently has across all devices. When the configured limit is exceeded, the renewal is denied. Playback stops because the license expires - the CDM on the device enforces it. There is nothing for the client to intercept or spoof.</p>
<p>The heavy lifting falls entirely on the server side. Axinom DRM tracks session state, enforces limits across Widevine, PlayReady, and FairPlay, and handles all counting logic centrally. The player's only requirement is to support license renewal at the intervals the server expects, which any standards-compliant player already does. No custom client code, no fragile application-layer session tracking.</p>
<p>There are meaningful design choices to make. Do you count unique devices or unique sessions? If a user opens two browser tabs, is that one slot or two? Axinom DRM supports different concurrency modes to match different business models. There is also a cross-DRM consideration: PlayReady doesn't natively support session identifiers the same way Widevine does, so the entitlement service can supply custom session IDs to ensure consistent limit enforcement regardless of which DRM technology is in use.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-holds-it-all-together-clear-contracts-not-tight-coupling">What Holds It All Together: Clear Contracts, Not Tight Coupling<a href="https://docs.axinom.com/blog/drm-beyond-the-player#what-holds-it-all-together-clear-contracts-not-tight-coupling" class="hash-link" aria-label="Direct link to What Holds It All Together: Clear Contracts, Not Tight Coupling" title="Direct link to What Holds It All Together: Clear Contracts, Not Tight Coupling" translate="no">​</a></h2>
<p>The recurring theme across all of these challenges is the same: the player, the entitlement service, and the license server form a triangle. Weaknesses on any side compromise the entire system.</p>
<p>One approach to this problem is tight vertical integration: use a single vendor's player and DRM service, and rely on their internal coupling to handle the complexity. There are scenarios where that makes sense. But it comes at a cost: you're locked into one player technology, one vendor's roadmap, and one set of trade-offs across every device and platform you need to reach.</p>
<p>At Axinom, we've taken a different path. Rather than coupling the license service to a specific player, we focus on well-defined contracts between the components. The DRM systems themselves - Widevine, PlayReady, FairPlay - already define how players and license servers communicate. When the license server exposes clear, standards-compliant behavior and the entitlement message carries explicit policies, any capable player can integrate correctly. The intelligence lives in the entitlement message and the license server's policy enforcement, not in proprietary glue between a specific player and a specific backend.</p>
<p>In practice, this means Axinom DRM works with the widest possible range of players - Bitmovin, Shaka, ExoPlayer, dash.js, AVPlayer, VisualOn, THEOplayer, and many others - without sacrificing the sophistication of multi-key policies, concurrent stream limiting, or security level enforcement. You choose the best player for each platform and device category, and the license service provides the same rigorous enforcement regardless.</p>
<p>When multi-key encryption is planned at packaging time, with usage policies defined in the entitlement message and enforcement on the license server, the player gets a clear contract: request keys, receive only the ones the server approves, and let the CDM enforce the policies. When concurrent stream limiting is active, the player must support license renewal at the intervals the server expects. When the entitlement service is implemented as a proxy, token lifecycle and authorization logic become entirely server-side concerns - the player sends license requests to an endpoint that always works, with no awareness of tokens at all. None of this requires the player and the license server to come from the same vendor; it requires them to speak the same well-defined language.</p>
<p>The teams that get this right are the ones that think about DRM as a system with clear interfaces from the start, not as a set of isolated integrations, but also not as a monolith where switching any one component means replacing everything.</p>
<hr>
<p><em>For a detailed walkthrough of entitlement message configuration, usage policies, and security best practices, see our <a href="https://docs.axinom.com/services/drm/technical-articles/drm-best-practices/" target="_blank" rel="noopener noreferrer" class="">DRM Best Practices guide</a>. For concurrent stream limiting specifics, see our <a href="https://docs.axinom.com/services/drm/license-service/concurrent-playback" target="_blank" rel="noopener noreferrer" class="">CSL documentation</a>.</em></p>
<p><em>Ready to put this into practice? Start a <a href="https://portal.axinom.com/mosaic/free-trial" target="_blank" rel="noopener noreferrer" class="">free trial of Axinom DRM</a> or <a href="https://calendly.com/axinom-media/content-protection" target="_blank" rel="noopener noreferrer" class="">schedule a technical conversation</a> with our team.</em></p>]]></content>
        <author>
            <name>Johannes Jauch</name>
            <email>jauch@axinom.com</email>
            <uri>https://www.axinom.com/contact/johannes</uri>
        </author>
        <category label="DRM" term="DRM"/>
        <category label="csl" term="csl"/>
        <category label="Widevine" term="Widevine"/>
        <category label="fairplay" term="fairplay"/>
        <category label="playready" term="playready"/>
        <category label="player" term="player"/>
        <category label="entitlement" term="entitlement"/>
        <category label="token" term="token"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Widevine Cloud License Service (CLS) Sunset: Switch to Axinom DRM]]></title>
        <id>https://docs.axinom.com/blog/widevine-cls-sunset</id>
        <link href="https://docs.axinom.com/blog/widevine-cls-sunset"/>
        <updated>2026-02-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Google Widevine's Cloud License Service (CLS) will cease operations in April 2027. Axinom DRM offers a robust, independent solution for content providers to transition smoothly and securely.]]></summary>
        <content type="html"><![CDATA[<p>Google Widevine recently announced that its Cloud License Service (CLS) will cease operations on April 13, 2027. While this date may seem distant, the implications for content providers and OTT platforms currently relying on this service are immediate and require careful planning.</p>
<h1>What Does the Sunset Mean for You?</h1>
<p>Already on Axinom DRM? Case closed. You're done. 🚀</p>
<p>If not, Widevine CLS' retirement means that you'll need to migrate to an alternative license service provider to ensure uninterrupted content protection and delivery. This transition period is an opportunity to evaluate your current DRM strategy and seek solutions that offer greater flexibility, higher availability, and specialized features that your current solution might lack.</p>
<!-- -->
<h1>The Axinom Advantage: Independence and Reliability</h1>
<p>At Axinom, we have always prioritized robust and flexible content protection. Axinom DRM is a comprehensive multi-DRM solution that natively supports Google Widevine, Apple FairPlay, and Microsoft PlayReady.</p>
<p>Crucially, Axinom DRM is Google-independent. Our service generates Widevine licenses locally without interacting with Google’s Cloud Service. This architectural choice was made early on to maximize robustness. As this has been Axinom's core design principle for years, Axinom's solution is mature, proven, and ready to handle the transition away from Google's cloud service without any disruption to your content delivery.</p>
<h1>Why Choose Axinom DRM for Your Transition?</h1>
<p>It goes without saying that you can import your existing encryption keys and avoid re-encoding content. Axinom's Widevine license service can work as a drop-in replacement for Google's cloud service with minimal effort, ensuring a smooth migration path.</p>
<p>By choosing Axinom, you aren't just finding a replacement for a sunsetting service; you are upgrading to a high-performance DRM ecosystem:</p>
<ul>
<li class="">
<p>Higher Availability &amp; Lower Latency: Because we don't rely on external cloud calls for license generation, we can guarantee 99.999% uptime and ultra-low latency.</p>
</li>
<li class="">
<p>Proven Scalability: Our infrastructure is built for the biggest stages, capable of serving over 100,000 DRM licenses per second for major live events.</p>
</li>
<li class="">
<p>Offline and On-Premises Capabilities: Whether it's for on-board entertainment or closed ISP environments, Axinom DRM can be deployed on-premises to work wherever your audience is.</p>
</li>
<li class="">
<p>Multi-Cloud &amp; Multi-Region: Our globally distributed servers across multiple public cloud providers ensure your content plays securely on every device and browser, anywhere in the world.</p>
</li>
<li class="">
<p>Developer-First Approach: We provide comprehensive APIs, documentation, and free integration support to get your service up and running in hours, not weeks.</p>
</li>
</ul>
<h1>Start Your Migration Today</h1>
<p>The countdown to April 2027 has begun. Transitioning your DRM infrastructure is a critical task that shouldn't be left to the last minute. Axinom is here to ensure that your move away from the Widevine cloud license service is seamless, secure, and future-proof.</p>
<p>Ready to secure your content's future?
<a href="https://portal.axinom.com/" target="_blank" rel="noopener noreferrer" class="">Sign up for a free 60-day trial of Axinom DRM</a> today or <a href="https://calendly.com/axinom-media/content-protection" target="_blank" rel="noopener noreferrer" class="">arrange a demo</a> and experience the power of independent, high-performance content protection.</p>]]></content>
        <author>
            <name>Johannes Jauch</name>
            <email>jauch@axinom.com</email>
            <uri>https://www.axinom.com/contact/johannes</uri>
        </author>
        <category label="DRM" term="DRM"/>
        <category label="CLS" term="CLS"/>
        <category label="Widevine" term="Widevine"/>
        <category label="Deprecation" term="Deprecation"/>
        <category label="Transition" term="Transition"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Mosaic Agent Skills]]></title>
        <id>https://docs.axinom.com/blog/mosaic-agent-skills</id>
        <link href="https://docs.axinom.com/blog/mosaic-agent-skills"/>
        <updated>2025-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Generate complete Explorer, Create, and Details stations for your Mosaic entities in minutes with AI-powered code generation. Works with Claude Code, GitHub Copilot, and other MCP-enabled AI agents.]]></summary>
        <content type="html"><![CDATA[<p>We're excited to release <code>Mosaic Agent Skills</code> - AI-powered code generation for Mosaic development, delivered as an MCP (Model Context Protocol) server (<code>@axinom/mosaic-agent-skills</code>). It generates production-ready code from simple prompts, working with Claude Code, GitHub Copilot, and other MCP-enabled AI agents.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="from-hours-to-minutes">From Hours to Minutes<a href="https://docs.axinom.com/blog/mosaic-agent-skills#from-hours-to-minutes" class="hash-link" aria-label="Direct link to From Hours to Minutes" title="Direct link to From Hours to Minutes" translate="no">​</a></h2>
<p>Mosaic's comprehensive architecture ensures consistency and quality across your application - but following all the conventions and patterns can be time-consuming. What typically takes hours of careful implementation can now be done in minutes with simple prompts like:</p>
<div class="prompt-box">
  using the mosaic-agent-skills, generate an explorer station for the entity AudioBook.
</div>
<p>The AI agent discovers your project structure, analyzes your GraphQL schema, and generates production-ready code following Mosaic best practices - automatically.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-design-decisions">Key Design Decisions<a href="https://docs.axinom.com/blog/mosaic-agent-skills#key-design-decisions" class="hash-link" aria-label="Direct link to Key Design Decisions" title="Direct link to Key Design Decisions" translate="no">​</a></h2>
<p><strong>AI Agent Agnostic</strong> - Built on the Model Context Protocol (MCP), these skills work with Claude Code, GitHub Copilot, and other MCP-enabled agents. Your team isn't locked into a specific vendor.</p>
<p><strong>Self-Contained and Reliable</strong> - Each skill includes everything needed to generate consistent code: conventions, templates, and step-by-step workflows. We've implemented techniques to ensure reliable, repeatable outputs across different AI models.</p>
<p><strong>Domain Agnostic</strong> - The skills discover your project structure and adapt to your GraphQL schema. As long as your project uses the Mosaic stack, they work without modification.</p>
<p><strong>Learning by Example</strong> - Beyond automation, the skills serve as learning tools, demonstrating Mosaic patterns that developers can understand and apply manually when needed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-available-now">What's Available Now<a href="https://docs.axinom.com/blog/mosaic-agent-skills#whats-available-now" class="hash-link" aria-label="Direct link to What's Available Now" title="Direct link to What's Available Now" translate="no">​</a></h2>
<p>The initial release includes skills for frontend station generation:</p>
<ul>
<li class=""><strong>Explorer Stations</strong> - Entity browsing with lists, filters, sorting, pagination, real-time updates, bulk-edit, and quick edit integration</li>
<li class=""><strong>Create Stations</strong> - Entity creation forms with validation</li>
<li class=""><strong>Details Stations</strong> - Comprehensive editing interfaces with update/delete actions, image/video management, and resource management</li>
</ul>
<p>All generated code includes GraphQL operations, TypeScript components, form validation, route registration, breadcrumbs, and integration with existing stations.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://docs.axinom.com/blog/mosaic-agent-skills#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Configure the MCP server in your AI agent:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"mcpServers"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"mosaic-agent-skills"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"stdio"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"command"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"npx"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"args"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"@axinom/mosaic-agent-skills"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Then start generating stations with simple prompts. Check out our <a class="" href="https://docs.axinom.com/getting-started/ai-assisted-development/mosaic-agent-skills">comprehensive documentation</a> for setup instructions and usage examples.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="roadmap">Roadmap<a href="https://docs.axinom.com/blog/mosaic-agent-skills#roadmap" class="hash-link" aria-label="Direct link to Roadmap" title="Direct link to Roadmap" translate="no">​</a></h2>
<p>Planned additions:</p>
<ul>
<li class=""><strong>More Skills</strong> - Backend generation, brownfield updates</li>
<li class=""><strong>Extensibility</strong> - Tools to create project-specific skills</li>
<li class=""><strong>Customizability</strong> - Adapt core skills to match your team's patterns</li>
</ul>
<p>We're looking forward to seeing how teams use these skills. Share your feedback and help us shape the future of AI-assisted Mosaic development.</p>
<p><strong>Resources:</strong></p>
<ul>
<li class=""><a class="" href="https://docs.axinom.com/getting-started/ai-assisted-development/mosaic-agent-skills">Full Documentation</a></li>
<li class=""><a href="https://www.npmjs.com/package/@axinom/mosaic-agent-skills" target="_blank" rel="noopener noreferrer" class="">Package on npm</a></li>
</ul>]]></content>
        <author>
            <name>Ruwan Xaviour Fernando</name>
            <email>r.fernando@axinom.com</email>
        </author>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 27 November]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20251127</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20251127"/>
        <updated>2025-11-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base.
Here is a summary over the last few weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Identity Service</li>
<li class="">Hosting Service</li>
<li class="">DRM Service</li>
</ul>
<!-- -->
<p>See <a class="" href="https://docs.axinom.com/general/release-notes/mosaic-release-notes">full release notes</a> for all Mosaic services.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="identity-service">Identity Service<a href="https://docs.axinom.com/blog/mosaic-update-20251127#identity-service" class="hash-link" aria-label="Direct link to Identity Service" title="Direct link to Identity Service" translate="no">​</a></h2>
<ul>
<li class="">Introduced <strong>Bulk Edit</strong> functionality for Users and User Roles in the respective Explorer stations. Teams can now perform bulk operations on multiple users and roles simultaneously, improving efficiency when managing large user bases.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hosting-service">Hosting Service<a href="https://docs.axinom.com/blog/mosaic-update-20251127#hosting-service" class="hash-link" aria-label="Direct link to Hosting Service" title="Direct link to Hosting Service" translate="no">​</a></h2>
<ul>
<li class="">Added on-demand RabbitMQ resource management directly from the Mosaic Admin. Administrators can now initialize and delete RabbitMQ resources for environments as needed.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="axinom-drm-service">Axinom DRM Service<a href="https://docs.axinom.com/blog/mosaic-update-20251127#axinom-drm-service" class="hash-link" aria-label="Direct link to Axinom DRM Service" title="Direct link to Axinom DRM Service" translate="no">​</a></h2>
<p>Security updates:</p>
<p>DRM Widevine API 6.29.1:</p>
<ul>
<li class="">Added device class to reporting logs</li>
</ul>
<p>DRM FairPlay API 6.25.1:</p>
<ul>
<li class="">Added platform, security level, and device class to reporting logs</li>
<li class="">Improved security level values to display human-readable names instead of numeric values (1/2) in trace and reporting logs</li>
</ul>
<p>DRM PlayReady API 6.24.1:</p>
<ul>
<li class="">PlayReady License Server SDK updated from v4.6.7607.0_QFE1 to v4.7.8118. This is a "mandatory" SDK update that Microsoft requires partners to deploy within 6 months of the release date (4th Sept 2025).<!-- -->
<ul>
<li class="">To PlayReady API <strong>On-premise users</strong>: PlayReady API 6.24.1 requires the SDK v4.7.8118+. Please update the SDK files.</li>
</ul>
</li>
</ul>
<p>Full DRM <a class="" href="https://docs.axinom.com/services/drm/general/release-notes/">release notes</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 27 October]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20251027-bulkedit</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20251027-bulkedit"/>
        <updated>2025-10-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base.
Here is a summary over the last few weeks.</p>
<p>The highlight of the latest Mosaic release which was published on 27 October 2025 is the <strong>Bulk Edit</strong> feature.</p>
<!-- -->
<p>Bulk Edit allows editors to perform the same operations on multiple items matching a filter from an Explorer, dramatically improving efficiency when managing large content catalogs.</p>
<p>Instead of editing items one by one, editors can now select multiple entities in an Explorer and update properties, add or remove related items a single action.</p>
<p><img decoding="async" loading="lazy" alt="bulk-edit-usage" src="https://docs.axinom.com/assets/images/bulk-edit-usage-7d38c0fef3f8e6178ac02878a366b959.png" width="1918" height="907" class="img_ev3q">
<em>Screenshot: Bulk Edit in action - selecting multiple items and editing their properties</em></p>
<p>Developers can define very flexibly, what options shall be available for editos in the Bulk Edit panel.</p>
<p>To learn more about implementing Bulk Edit for your own services, check out our documentation:</p>
<ul>
<li class=""><a href="https://docs.axinom.com/concepts/bulk-edit" target="_blank" rel="noopener noreferrer" class="">Bulk Edit Concept</a> - Overview and technical architecture</li>
<li class=""><a href="https://docs.axinom.com/getting-started/customization-tutorials/bulk-edit/enable-bulk-edit-for-entity" target="_blank" rel="noopener noreferrer" class="">Enable Bulk Edit for an Entity</a> - Step-by-step implementation guide</li>
</ul>
<p>See <a class="" href="https://docs.axinom.com/general/release-notes/mosaic-release-notes">full release notes</a> for all Mosaic services.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 02 October]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20251002</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20251002"/>
        <updated>2025-10-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last few weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last few weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Video Service R132</li>
<li class="">Image Service R132</li>
<li class="">AxAuth Service R132</li>
<li class="">DRM Widevine API 6.29</li>
<li class="">DRM FairPlay API 6.25</li>
<li class="">DRM PlayReady API 6.23</li>
<li class="">Encoding Service 2.48</li>
</ul>
<!-- -->
<p>See <a class="" href="https://docs.axinom.com/general/release-notes/mosaic-release-notes">full release notes</a> for all Mosaic services.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20251002#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<ul>
<li class="">Incorporated to the <code>Video Details</code> station to give possible explanations for an encoding error and provide recommendations.
The button <code>Ask Axi</code> is available on the encoding details; no need to expand the Encoding History to search for an error message.</li>
<li class="">Improved the workflow on the <code>Video Acquisition Settings</code> station where previously a SAS Token (when using <code>Azure Blob</code> storage provider) or a Management Access Key (when using <code>AWS S3</code> storage provider) was required. Now these values are no longer needed, as we use the existing storage credentials to securely <code>list</code> the storage contents when a user would use the <code>New Video</code> station. You will not find the SAS Token / Management Access Key fields anymore in the <code>Video Acquisition Settings</code>.</li>
<li class="">Added an easy way to access the <code>Processing Profile</code> that was used from within the Video Details station.</li>
</ul>
<p>Video Service <a class="" href="https://docs.axinom.com/services/video">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="image-service">Image Service<a href="https://docs.axinom.com/blog/mosaic-update-20251002#image-service" class="hash-link" aria-label="Direct link to Image Service" title="Direct link to Image Service" translate="no">​</a></h2>
<p>We've added a new feature <code>Bulk Edit</code> for BETA testing.
This should allow you to perform edit operations on the <code>Images</code> explorer currently, where changes will be applied to all selected rows in the explorer as a bulk-operation.
Feel free to take it up for a spin in the <code>Image Explorer</code>. We will launch this feature in its full glory soon.</p>
<p><img decoding="async" loading="lazy" alt="bulk-edit beta feature" src="https://docs.axinom.com/assets/images/image-service-bulk-edit-15d79df8d04b37dd117e918995bccc80.png" width="1912" height="321" class="img_ev3q"></p>
<p>Image Service <a class="" href="https://docs.axinom.com/services/image">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="axauth-service">AxAuth Service<a href="https://docs.axinom.com/blog/mosaic-update-20251002#axauth-service" class="hash-link" aria-label="Direct link to AxAuth Service" title="Direct link to AxAuth Service" translate="no">​</a></h2>
<ul>
<li class="">With <code>Email Exclusion Patterns</code> you can disallow specific email domains or well-defined email patterns from using the <code>Email/Password</code> authentication to authenticate.
This comes in handy when you want to exclude certain email domains (i.e. your company email addresses) from using direct Email/Password authentication, and want to always use a federated authentication provider such as <code>Microsoft Entra ID</code> for them instead.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="axinom-drm-service">Axinom DRM Service<a href="https://docs.axinom.com/blog/mosaic-update-20251002#axinom-drm-service" class="hash-link" aria-label="Direct link to Axinom DRM Service" title="Direct link to Axinom DRM Service" translate="no">​</a></h2>
<p>DRM Widevine API 6.29:</p>
<ul>
<li class="">Minor security update.</li>
<li class="">Fixed error handling of requests from “Unknown” devices. They’re now once more properly handled as client errors, instead of resulting in a server error.</li>
</ul>
<p>DRM FairPlay API 6.25:</p>
<ul>
<li class="">Minor security update.</li>
<li class="">Modified device class data type to match value returned by widevine device type used in traced requests logging.</li>
<li class="">Fixed log attribute casing</li>
<li class="">Exposed X-AxDrm-ErrorCode HTTP Header for clients that use CORS. This is a relatively new custom header that represents Axinom error codes. Currently, this header is only used in Concurrent Stream Limiting.</li>
<li class="">Added the "blocked users" feature. A user can now be blocked from receiving new licenses based on the "user_id" in the entitlement message when the same user is also added to the blacklist via the Management API "api/BlockedUsers" <a class="" href="https://docs.axinom.com/services/drm/license-service/license-service-management-api/blocked-users">endpoint</a>.</li>
</ul>
<p>DRM PlayReady API 6.23:</p>
<ul>
<li class="">Added the "blocked users" feature. A user can now be blocked from receiving new licenses based on the "user_id" in the entitlement message when the same user is also added to the blacklist via the Management API "api/BlockedUsers" <a class="" href="https://docs.axinom.com/services/drm/license-service/license-service-management-api/blocked-users">endpoint</a>.</li>
</ul>
<p>Full DRM <a class="" href="https://docs.axinom.com/services/drm/general/release-notes/">release notes</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="encoding-service-248252651">Encoding Service 2.48.25265.1<a href="https://docs.axinom.com/blog/mosaic-update-20251002#encoding-service-248252651" class="hash-link" aria-label="Direct link to Encoding Service 2.48.25265.1" title="Direct link to Encoding Service 2.48.25265.1" translate="no">​</a></h2>
<ul>
<li class="">Added accessibility property to DASH manifests for CC and AD.</li>
<li class="">Fixed uploading thumbnails to FTP.</li>
<li class="">Support for language code ‘zxx’ (‘No linguistic content’)</li>
<li class="">Fixed an intermittent issue with some FTP Message Publisher connections.</li>
</ul>
<p>Full Encoding <a class="" href="https://docs.axinom.com/services/encoding/general/encoding-release-notes/">release notes</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="DRM" term="DRM"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Delivering Widevine DRM licenses independently from Google's cloud service]]></title>
        <id>https://docs.axinom.com/blog/delivering-widevine-independently</id>
        <link href="https://docs.axinom.com/blog/delivering-widevine-independently"/>
        <updated>2025-07-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom DRM has integrated the official Widevine License Server SDK directly — enabling us to issue licenses without any dependency on Google’s own cloud service.]]></summary>
        <content type="html"><![CDATA[<p>In today’s digital content landscape, Google Widevine remains the most widely used DRM technology.
As streaming ecosystems evolve, the demand for low-latency and highly available DRM services is growing — especially among clients operating in time-sensitive environments.</p>
<p><a href="https://axinom.com/products/drm" target="_blank" rel="noopener noreferrer" class="">Axinom DRM</a> is a robust multi-DRM service. For Widevine, Axinom has integrated the official Widevine License Server SDK directly into its service — enabling us to issue licenses without any dependency on Google’s own cloud service.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fully-autonomous-license-delivery">Fully Autonomous License Delivery<a href="https://docs.axinom.com/blog/delivering-widevine-independently#fully-autonomous-license-delivery" class="hash-link" aria-label="Direct link to Fully Autonomous License Delivery" title="Direct link to Fully Autonomous License Delivery" translate="no">​</a></h2>
<p>Axinom DRM operates as a standalone Widevine license service. All license creation and delivery is handled entirely within our own cloud infrastructure. This allows us to control latency, redundancy, and scalability while integrating DRM into larger service architectures with precision and reliability.</p>
<p>Axinom is a Certified Widevine Implementation Partner (CWIP) and one of the few trusted third-party providers officially licensed to deploy Widevine’s server SDK.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-benefits-of-local-license-generation">Key Benefits of Local License Generation<a href="https://docs.axinom.com/blog/delivering-widevine-independently#key-benefits-of-local-license-generation" class="hash-link" aria-label="Direct link to Key Benefits of Local License Generation" title="Direct link to Key Benefits of Local License Generation" translate="no">​</a></h2>
<p>Issuing licenses locally — within our infrastructure instead of relying on Google's service — brings several practical advantages:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="reduced-latency">Reduced Latency<a href="https://docs.axinom.com/blog/delivering-widevine-independently#reduced-latency" class="hash-link" aria-label="Direct link to Reduced Latency" title="Direct link to Reduced Latency" translate="no">​</a></h3>
<p>By eliminating the additional round-trip to an external license service, we shorten response times. Additionally, our DRM service is deployed across multiple public cloud providers. With least-latency routing we connect end users to the closest service node, which further improves service response times.</p>
<p>This is particularly important for live or low-latency streaming scenarios where fast playback start-up and minimal buffering are key.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="higher-availability">Higher Availability<a href="https://docs.axinom.com/blog/delivering-widevine-independently#higher-availability" class="hash-link" aria-label="Direct link to Higher Availability" title="Direct link to Higher Availability" translate="no">​</a></h3>
<p>With no dependency on an external license endpoint, Axinom DRM avoids a potential single point of failure. Our Widevine license service uses a global load balancer and is deployed across multiple public clouds on five continents for increased resilience and uptime.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="on-premise-deployment-support">On-Premise Deployment Support<a href="https://docs.axinom.com/blog/delivering-widevine-independently#on-premise-deployment-support" class="hash-link" aria-label="Direct link to On-Premise Deployment Support" title="Direct link to On-Premise Deployment Support" translate="no">​</a></h3>
<p>For isolated or offline environments — such as closed networks or other disconnected deployments — Axinom DRM can also be delivered as an on-premise license service. This flexibility supports use cases where cloud connectivity is limited or unavailable, while still meeting the same technical and compliance standards.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://docs.axinom.com/blog/delivering-widevine-independently#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h2>
<p>Axinom DRM offers a self-contained, high-performance solution for Widevine license delivery, operating independently of Google’s hosted services. Whether deployed in the cloud or on-premise, our infrastructure ensures reliable DRM integration for clients with demanding streaming or content protection requirements.</p>]]></content>
        <author>
            <name>Johannes Jauch</name>
            <email>jauch@axinom.com</email>
            <uri>https://www.axinom.com/contact/johannes</uri>
        </author>
        <category label="DRM" term="DRM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Pentest: Building Trust Through Validation]]></title>
        <id>https://docs.axinom.com/blog/pentest</id>
        <link href="https://docs.axinom.com/blog/pentest"/>
        <updated>2025-07-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom partnered with NEVERHACK for a pentest, which gave actionable insights to improve application security, helped with ISO 27001 certification and confirmed our strong security posture.]]></summary>
        <content type="html"><![CDATA[<p>At Axinom, security is never an afterthought—it’s part of our DNA.</p>
<p>To ensure our SaaS platforms meet the highest standards, we recently partnered with <a href="https://neverhack.ee/" target="_blank" rel="noopener noreferrer" class="">NEVERHACK Estonia</a> for an in-depth web application penetration test.</p>
<!-- -->
<p>This engagement wasn’t driven by an incident, but by foresight. We wanted to validate our controls, uncover hidden risks, and reinforce our commitment to security for our customers in aerospace, media, and beyond.</p>
<p>The result?</p>
<ul>
<li class="">Actionable insights to improve processes</li>
<li class="">Significant help for our <a href="https://axinom.com/security" target="_blank" rel="noopener noreferrer" class="">ISO 27001:2022 certification</a></li>
<li class="">No critical vulnerabilities found</li>
<li class="">Confirmation of our strong security posture</li>
<li class="">Even greater confidence in our ability to protect what matters most</li>
</ul>
<p>Many thanks to the NEVERHACK Estonia team for their professionalism and clarity throughout the process.</p>
<p>👉 Learn more <a href="https://neverhack.ee/wp-content/uploads/2025/07/axinom-case-study-2025.pdf" target="_blank" rel="noopener noreferrer" class="">how proactive testing can build trust and resilience</a></p>
<p>👉 Want to hear as speaking about this experience? Visit <a href="https://neverhack.ee/en/security-summit#program" target="_blank" rel="noopener noreferrer" class="">Security Summit</a> on 11.09.20025 in Tallinn</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Security" term="Security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 09 July]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20250709</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20250709"/>
        <updated>2025-07-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last few weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last few weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Video Service R126</li>
<li class="">Localization Service R126</li>
<li class="">DRM Widevine API 6.28.3</li>
<li class="">Encoding Service 2.47.25168.1</li>
</ul>
<!-- -->
<p>See <a class="" href="https://docs.axinom.com/general/release-notes/mosaic-release-notes">full release notes</a> for all Mosaic services.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="general">General<a href="https://docs.axinom.com/blog/mosaic-update-20250709#general" class="hash-link" aria-label="Direct link to General" title="Direct link to General" translate="no">​</a></h2>
<p>In this release we've moved the stations that used to exist in the
<a href="https://admin.service.eu.axinom.com/" target="_blank" rel="noopener noreferrer" class="">Admin Portal</a> containing the <em>Service Settings</em>
of <code>Image Service</code>, <code>Localization Service</code>, <code>User Service</code> &amp; <code>Video Service</code> into
the Management System UI.
With this move we hope to better consolidate the management of the services under a single umbrella while still retaining the access control to these <code>Administrative</code> stations with the existing permissions.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20250709#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<p>This release adds support for setting the default <code>Audio</code> and <code>Text</code> language priorities
in the <code>Content Packaging</code> section of video <code>Processing Profiles</code>.
These default selection applies only to main audio and subtitle streams
(excludes descriptive audio/closed captions).
Manifests (HLS and DASH) will reflect this default language configuration.
This should improve automation and consistency in stream default selection for
packaged content.</p>
<p>Video Service <a class="" href="https://docs.axinom.com/services/video">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="localization-service">Localization Service<a href="https://docs.axinom.com/blog/mosaic-update-20250709#localization-service" class="hash-link" aria-label="Direct link to Localization Service" title="Direct link to Localization Service" translate="no">​</a></h2>
<p>The Localization Service now sends the <code>LocalizeEntityFinished</code> event also when
an editor would change the localizations and not only during ingest operations.
This would make the event more consistent with actual changes that occur in
localizations.</p>
<p>Localization Service <a class="" href="https://docs.axinom.com/services/localization">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-widevine-api-6283">DRM Widevine API 6.28.3<a href="https://docs.axinom.com/blog/mosaic-update-20250709#drm-widevine-api-6283" class="hash-link" aria-label="Direct link to DRM Widevine API 6.28.3" title="Direct link to DRM Widevine API 6.28.3" translate="no">​</a></h2>
<ul>
<li class="">Updated Widevine License Server SDK from 19.0.6 to 19.10.1 (latest).</li>
</ul>
<p>Full DRM <a class="" href="https://docs.axinom.com/services/drm/general/release-notes/">release notes</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="encoding-service-247251681">Encoding Service 2.47.25168.1<a href="https://docs.axinom.com/blog/mosaic-update-20250709#encoding-service-247251681" class="hash-link" aria-label="Direct link to Encoding Service 2.47.25168.1" title="Direct link to Encoding Service 2.47.25168.1" translate="no">​</a></h2>
<ul>
<li class="">Change native display name for 'spl' to 'Español (la)'</li>
<li class="">Support for setting default audio and text language priorities using the
<a class="" href="https://docs.axinom.com/services/encoding/encoding-api/section-content-processing#defaultaudiolanguagepriority"><code>DefaultAudioLanguagePriority</code></a> and <a class="" href="https://docs.axinom.com/services/encoding/encoding-api/section-content-processing#defaulttextlanguagepriority"><code>DefaultTextLanguagePriority</code></a> parameters.</li>
</ul>
<p>Full Encoding <a class="" href="https://docs.axinom.com/services/encoding/general/encoding-release-notes/">release notes</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="DRM" term="DRM"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ISO 27001:2022 Certification Achieved]]></title>
        <id>https://docs.axinom.com/blog/iso-27001</id>
        <link href="https://docs.axinom.com/blog/iso-27001"/>
        <updated>2025-06-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom GmbH achieved ISO/IEC 27001:2022 certification from TÜV SÜD. This also adds to our long-standing work in content and application security.]]></summary>
        <content type="html"><![CDATA[<p>Great news! Axinom GmbH is now officially ISO/IEC 27001:2022 certified!</p>
<p><a href="https://www.tuvsud.com/ms-zert" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" alt="ISO 27001 certified by TÜV SÜD" src="https://docs.axinom.com/assets/images/ISO_27001_colour_single-0e763555f1e1c8e48ce7709a142f2692.jpg" width="298" height="298" class="img_ev3q"></a></p>
<!-- -->
<p>Protecting our customers' data is central to everything we do,
so we're proud to have our commitment to a robust Information Security Management System (ISMS)
validated by TÜV SÜD.</p>
<p>We were deliberate about this process, carefully balancing the requirements with our
business needs and teams' capacities, and we're proud to see the approach pay off.</p>
<p>This also adds to our long-standing work in content and application security,
including our <a href="https://axinom.com/products/drm" target="_blank" rel="noopener noreferrer" class="">DRM solutions</a> and contributions to industry
alliances such as <a href="https://www.svta.org/" target="_blank" rel="noopener noreferrer" class="">SVTA</a> / DASH-IF.</p>
<p>Many thanks to our partners who helped us throughout the security journey:
<a href="https://ictinstitute.nl/" target="_blank" rel="noopener noreferrer" class="">ICT Institute</a> and <a href="https://neverhack.ee/" target="_blank" rel="noopener noreferrer" class="">Neverhack Estonia</a>.</p>
<p>Have any questions about our security policies, especially if you're looking forward to partner
with Axinom? Visit our new <a href="https://axinom.com/security" target="_blank" rel="noopener noreferrer" class="">Security page</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Security" term="Security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 16 June]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20250616</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20250616"/>
        <updated>2025-06-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Video Service R125</li>
<li class="">Hosting Service R125</li>
<li class="">DRM Key Service 1.21.4</li>
</ul>
<!-- -->
<p>See <a class="" href="https://docs.axinom.com/general/release-notes/mosaic-release-notes">full release notes</a> for all Mosaic services.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20250616#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<p>We're making some technical changes starting this release to make the
Mosaic Managed Services more independent in terms of the release cadences.
The Video Service is the first to receive this treatment, and as a result
we've introduced a new library <a href="https://www.npmjs.com/package/@axinom/mosaic-video-messages" target="_blank" rel="noopener noreferrer" class=""><code>@axinom/mosaic-video-messages</code></a>
that contains all the Message Settings of this service.</p>
<p>Video Service <a class="" href="https://docs.axinom.com/services/video">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hosting-service">Hosting Service<a href="https://docs.axinom.com/blog/mosaic-update-20250616#hosting-service" class="hash-link" aria-label="Direct link to Hosting Service" title="Direct link to Hosting Service" translate="no">​</a></h2>
<p>We made some changes to the RMQ vhost creation logic.
Now, for new environments created via the API (<code>createEnvironment</code>),
the RMQ vhost &amp; shovels to shovel messages belonging to your environment to-and-from
the Managed Services will not be automatically created.
However, they will still be automatically provisioned when you create a new
environment via the Admin Portal or when you deploy and Custom Services
through the Hosting Service.</p>
<p>Hosting Service <a class="" href="https://docs.axinom.com/platform/hosting/hosting-service-overview/">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-widevine-api-6281">DRM Widevine API 6.28.1<a href="https://docs.axinom.com/blog/mosaic-update-20250616#drm-widevine-api-6281" class="hash-link" aria-label="Direct link to DRM Widevine API 6.28.1" title="Direct link to DRM Widevine API 6.28.1" translate="no">​</a></h2>
<ul>
<li class="">Exposed <code>X-AxDrm-ErrorCode</code> HTTP Header for clients that use CORS. This is a fairly new custom header which represents Axinom error codes. Currently, this header is only used in Concurrent Stream Limiting.</li>
<li class="">Updated Widevine License Server SDK from 19.0.2 to 19.0.6 (latest). No behavioral changes expected.</li>
<li class="">Fixed Widevine "Client Token" (the main "client ID" for Chrome CDM-like clients) handling. Previously, since the update to License Server SDK v19, such clients appeared to support Client Tokens, even if they in reality did not (e.g. Firefox; Chrome with "persistentState" not set to 'required'). This led to the <code>recommended_client_id</code> and <code>client_token</code> to be reported incorrectly for such clients. One of the effects of this is the Concurrent Stream Limiting feature not being able to reliably track those clients.</li>
<li class="">Fixed <a class="" href="https://docs.axinom.com/services/drm/license-service/concurrent-playback">CSL</a> bug where Widevine "renewal" requests were mistaken for "new" requests. This prevented the session-based blocking method from working correctly.</li>
<li class="">Fixed Widevine license service incorrectly enforcing some native standard claims (such as 'exp'), which resulted in 500 Internal Server error responses. Now only the Axinom-specific claims documented in the "License Service Message" documentation are enforced, as expected.</li>
</ul>
<p>Full DRM <a class="" href="https://docs.axinom.com/services/drm/general/release-notes/">release notes</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="DRM" term="DRM"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Concurrent Stream Limiting (CSL) with Axinom DRM]]></title>
        <id>https://docs.axinom.com/blog/concurrent-stream-limiting</id>
        <link href="https://docs.axinom.com/blog/concurrent-stream-limiting"/>
        <updated>2025-06-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DRM-supported CSL - control the number of simultaneous streams per user, license renewal interval and grace period, concurrency enforcement mode.]]></summary>
        <content type="html"><![CDATA[<p>Did you know that Axinom DRM supports <a class="" href="https://docs.axinom.com/services/drm/license-service/concurrent-playback">Concurrent Stream Limiting</a> (CSL)?
This feature allows you to control how many simultaneous streams a single user can initiate—enforced through robust DRM integration.
As a service provider you can configure:</p>
<ul>
<li class="">The maximum number of concurrent streams</li>
<li class="">License renewal interval and grace period</li>
<li class="">Concurrency enforcement mode</li>
</ul>
<!-- -->
<p><img decoding="async" loading="lazy" alt="Concurrent Stream Limiting" src="https://docs.axinom.com/assets/images/ill_2025_blog_concurrent_streaming_01-feeebedf045a5dd10e8d7f10f18571a2.png" width="2401" height="1257" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-concurrent-stream-limiting">What is Concurrent Stream Limiting?<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#what-is-concurrent-stream-limiting" class="hash-link" aria-label="Direct link to What is Concurrent Stream Limiting?" title="Direct link to What is Concurrent Stream Limiting?" translate="no">​</a></h2>
<p><strong>Concurrent Stream Limiting (CSL)</strong> is a feature used by streaming platforms to restrict how many streams a user can play simultaneously using the same account.CSL is an effective measure to discourage credential sharing and helps protect your platform’s revenue by enforcing fair usage policies.</p>
<p>CSL works by actively monitoring the number of live playback sessions linked to a user and applying limitations based on defined thresholds.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-vs-non-drm-csl">DRM vs. Non-DRM CSL<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#drm-vs-non-drm-csl" class="hash-link" aria-label="Direct link to DRM vs. Non-DRM CSL" title="Direct link to DRM vs. Non-DRM CSL" translate="no">​</a></h2>
<p>While CSL can be implemented without DRM, using <strong>Digital Rights Management (DRM)</strong> provides significantly stronger enforcement.
DRM enables enforcement at the client level, leveraging secure, tamper-resistant mechanisms that are much harder to bypass than backend-only solutions.</p>
<p>Axinom DRM supports CSL with all major DRM technologies:</p>
<ul>
<li class="">Widevine</li>
<li class="">PlayReady</li>
<li class="">FairPlay</li>
</ul>
<p>Refer to the <a class="" href="https://docs.axinom.com/services/drm/license-service/concurrent-playback">official documentation</a> for details.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-csl-works-with-axinom-drm">How CSL works with Axinom DRM<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#how-csl-works-with-axinom-drm" class="hash-link" aria-label="Direct link to How CSL works with Axinom DRM" title="Direct link to How CSL works with Axinom DRM" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-server-side-configuration">🖥️ Server-Side Configuration<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#%EF%B8%8F-server-side-configuration" class="hash-link" aria-label="Direct link to 🖥️ Server-Side Configuration" title="Direct link to 🖥️ Server-Side Configuration" translate="no">​</a></h3>
<p>CSL settings are defined in the <a class="" href="https://docs.axinom.com/services/drm/license-service/entitlement-message">Entitlement Message</a>, and include:</p>
<ul>
<li class=""><strong>Number of simultaneous streams</strong>: Maximum concurrent playback sessions per user.</li>
<li class=""><strong>Renewal interval</strong> (default 5 minutes): The interval at which license renewal is requested.</li>
<li class=""><strong>Grace period</strong> (default 1 minute): The time window after a renewal is triggered during which playback can continue until a new license is granted.</li>
<li class=""><strong>Concurrency mode</strong>: Defines what happens when the limit is reached (e.g., block the new device, block the new session, or terminate the oldest session).</li>
</ul>
<p>To enable CSL, you must assign a unique ´user_id´ in each Entitlement Message.
For session-based concurrency modes, a ´session_id´ is also required—this can be the same as your content ID or another session identifier.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-client-side-considerations">📱 Client-Side Considerations<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#-client-side-considerations" class="hash-link" aria-label="Direct link to 📱 Client-Side Considerations" title="Direct link to 📱 Client-Side Considerations" translate="no">​</a></h3>
<p>Client-side behavior varies depending on the DRM technology in use:</p>
<ul>
<li class=""><strong>Widevine</strong> - Supports CSL and license renewal natively. Minimal client-side logic is required.</li>
<li class=""><strong>FairPlay</strong> - Requires manual triggering of license renewals—your video player needs to be extended to support this behavior.</li>
<li class=""><strong>PlayReady</strong> - Similar to FairPlay, but lacks a built-in license renewal concept. You must use low-level Encrypted Media Extensions (EME) APIs to create new DRM sessions each time a license nears expiration.</li>
</ul>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p>You can see CSL in action by using <a href="https://tools.axinom.com/players/CSLDemoPlayer" target="_blank" rel="noopener noreferrer" class="">Axinom CSL Demo Player</a>.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-try-axinom-drm-today">🚀 Try Axinom DRM Today<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#-try-axinom-drm-today" class="hash-link" aria-label="Direct link to 🚀 Try Axinom DRM Today" title="Direct link to 🚀 Try Axinom DRM Today" translate="no">​</a></h2>
<p>Want to explore CSL and other DRM capabilities hands-on?</p>
<a href="https://portal.axinom.com/mosaic/free-trial?ref=docs.axinom.com/blog" class="button button--lg button--primary" target="_self">Start Free Evaluation</a>
<p>See how easy it is to integrate secure, scalable content protection.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-related-links">📚 Related Links<a href="https://docs.axinom.com/blog/concurrent-stream-limiting#-related-links" class="hash-link" aria-label="Direct link to 📚 Related Links" title="Direct link to 📚 Related Links" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://docs.axinom.com/services/drm/license-service/concurrent-playback">Concurrent Stream Limiting</a></li>
<li class=""><a class="" href="https://docs.axinom.com/services/drm/technical-articles/license-renewal">DRM License Renewal</a></li>
</ul>]]></content>
        <author>
            <name>Johannes Jauch</name>
            <email>jauch@axinom.com</email>
            <uri>https://www.axinom.com/contact/johannes</uri>
        </author>
        <category label="DRM" term="DRM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tutorial: Manage Mosaic Environments with Axinom Portal]]></title>
        <id>https://docs.axinom.com/blog/mosaic-environments-axinom-portal</id>
        <link href="https://docs.axinom.com/blog/mosaic-environments-axinom-portal"/>
        <updated>2025-05-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Another video-tutorial: this time we explain how to manage Mosaic Environments using Axinom Portal.]]></summary>
        <content type="html"><![CDATA[<p>Another video-tutorial: this time we explain how to manage Mosaic Environments using Axinom Portal.</p>
<div><video class="axinom-web-player" width="100%" height="100%" poster="/img/video-loading.png"></video></div>
<p>This tutorial walks through:</p>
<ul>
<li class="">creating a new environment</li>
<li class="">editing existing ones</li>
<li class="">managing environment-related services</li>
<li class="">adding new users</li>
<li class="">assigning or modifying their roles</li>
</ul>
<!-- -->
<p>More information:</p>
<ul>
<li class=""><a class="" href="https://docs.axinom.com/general/portal/environment-management/">Environment management</a></li>
<li class=""><a class="" href="https://docs.axinom.com/general/portal/user-management/">User management</a></li>
<li class=""><a class="" href="https://docs.axinom.com/general/portal/user-management/user-roles/">User roles</a></li>
</ul>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Mosaic" term="Mosaic"/>
        <category label="Axinom Portal" term="Axinom Portal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 19 May]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20250519</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20250519"/>
        <updated>2025-05-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">User Service R122</li>
<li class="">Video Service R122</li>
<li class="">DRM Key Service 1.21.4</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="user-service">User Service<a href="https://docs.axinom.com/blog/mosaic-update-20250519#user-service" class="hash-link" aria-label="Direct link to User Service" title="Direct link to User Service" translate="no">​</a></h2>
<p>The <code>profileData</code> field of the <code>UserProfile</code> GQL type in <a class="" href="https://docs.axinom.com/services/user"><strong>Mosaic User Service</strong></a> is now deprecated. If you intend to store user-specific data, please use the <strong>Mosaic Personalization Service</strong> <a class="" href="https://docs.axinom.com/services/personalization#interfaces">API</a>.</p>
<p>Please refer to <a class="" href="https://docs.axinom.com/general/mosaic-deprecations">Planned Deprecations</a> page to see the timeline when the field will be removed.</p>
<p>See <a class="" href="https://docs.axinom.com/general/release-notes/mosaic-release-notes">full release notes</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20250519#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<p>With this update, it is now possible for users to initiate encoding jobs from the same source more than once. This enables greater flexibility in managing different output needs from a single source.</p>
<p>The <code>Video Details</code> station now includes a <code>New Encoding</code> action that is a shortcut to navigate users directly to the <code>New Video</code> station with the same <code>Processing Profile</code> (and the <code>Source Location</code>) pre-filled, as videos now store a reference to the processing profile used during encoding. You may maintain different <a class="" href="https://docs.axinom.com/services/video/setup-encoding-profiles/#processing-profile">Processing Profiles</a> for different use-cases and use them with this new feature to better manage different output needs.</p>
<p>Additionally, the <code>Retry Encoding</code> button (formerly labeled "Re-Encoding") remains available for use when an encoding job fails. This allows users to modify the processing profile if needed and re-attempt the encoding without creating a new video item.</p>
<p>Video Service <a class="" href="https://docs.axinom.com/services/video">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-key-service-1214">DRM Key Service 1.21.4<a href="https://docs.axinom.com/blog/mosaic-update-20250519#drm-key-service-1214" class="hash-link" aria-label="Direct link to DRM Key Service 1.21.4" title="Direct link to DRM Key Service 1.21.4" translate="no">​</a></h2>
<ul>
<li class="">Added <code>OmitHlsMasterPlaylistData</code> query parameter to the <code>Harmonic/V2</code> endpoint. If set to <code>true</code>, the <code>&lt;HLSSignalingData playlist="master"&gt;</code> element will be omitted from the CPIX response. Default is <code>false</code>.&nbsp;
Refer to <a class="" href="https://docs.axinom.com/services/drm/key-service/harmonic#omit-hls-master-playlist-data">Harmonic document</a> for further details.</li>
</ul>
<p>Older Key Service release notes can be found <a class="" href="https://docs.axinom.com/services/drm/general/release-notes/key-service-release-notes">here</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="DRM" term="DRM"/>
        <category label="Encoding" term="Encoding"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 11 Apr]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20250411</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20250411"/>
        <updated>2025-04-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Mosaic Core R121</li>
<li class="">Video Service R121</li>
<li class="">DRM License Service (FairPlay, Widevine, PlayReady)</li>
<li class="">Encoding Service 2.47</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mosaic-core">Mosaic Core<a href="https://docs.axinom.com/blog/mosaic-update-20250411#mosaic-core" class="hash-link" aria-label="Direct link to Mosaic Core" title="Direct link to Mosaic Core" translate="no">​</a></h2>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r121-april-10-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="nodejs-runtime-upgraded-to-v22">Node.js Runtime Upgraded to v22<a href="https://docs.axinom.com/blog/mosaic-update-20250411#nodejs-runtime-upgraded-to-v22" class="hash-link" aria-label="Direct link to Node.js Runtime Upgraded to v22" title="Direct link to Node.js Runtime Upgraded to v22" translate="no">​</a></h3>
<p>We have upgraded Customizable Services of the Media Template to the latest active LTS version of Node.js v22 from v18. This upgrade ensures improved performance, enhanced security, and access to the latest features and updates provided by the Node.js runtime. For more details on changes in Node.js v22, refer to the official <a href="https://nodejs.org/en/blog/announcements/v22-release-announce" target="_blank" rel="noopener noreferrer" class="">release announcement</a>. You can also find the PR <a href="https://github.com/Axinom/mosaic-media-template/pull/430" target="_blank" rel="noopener noreferrer" class="">here</a> that did this change should you wish to also apply the same on your customized services.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="libraries">Libraries<a href="https://docs.axinom.com/blog/mosaic-update-20250411#libraries" class="hash-link" aria-label="Direct link to Libraries" title="Direct link to Libraries" translate="no">​</a></h3>
<ul>
<li class=""><strong>General</strong>: We have addressed the vulnerability <a href="https://github.com/advisories/GHSA-jr5f-v2jv-69x6" target="_blank" rel="noopener noreferrer" class="">CVE-2025-27152</a> by bumping the <code>axios</code> library to a non-vulnerable version on all libraries that depend on it.</li>
<li class=""><strong>@axinom/mosaic-cli</strong>: The <code>mosaic hosting manifest upload</code> command now supports embedding environment variable values directly into deployment manifest. Using the special placeholder format <code>${**ax_hosted**.dynamic.%}</code> in the <code>YAML</code> file, you can dynamically assign environment-specific values (i.e. API keys, credentials, etc.) to the manifest during upload. This allows for a templated approach, enabling the reuse of a single manifest file across different environments with varying configurations. You can read more details <a href="https://docs.axinom.com/platform/packages/mosaic-cli#environment-variables-in-manifest-placeholders" target="_blank" rel="noopener noreferrer" class="">here</a>.</li>
<li class=""><strong>@axinom/mosaic-message-bus</strong>: Introduced support for two new broker events: <code>error</code> and <code>reconnected</code>. These events allow consumers to monitor RabbitMQ connection states and handle connection errors or reconnections programmatically. The <code>error</code> event provides details about connection issues, while the <code>reconnected</code> event includes information about the re-established connection and the duration of the disconnection. This feature enhances reliability and observability for the RMQ messaging workflows. Read more details <a href="https://docs.axinom.com/platform/packages/mosaic-message-bus#broker-events" target="_blank" rel="noopener noreferrer" class="">here</a>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20250411#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<ul>
<li class="">Added the Descriptive Audio feature support in the Video Service. The <a href="https://docs.axinom.com/services/video/setup-encoding-profiles/#processing-profile" target="_blank" rel="noopener noreferrer" class="">Content Processing Profile</a> settings are updated to include the configurations for it.</li>
<li class="">Added the ability to select the <code>Segment Format</code> in the <code>Content Processing Profile</code> when using <code>CMAF</code> output format for videos. Users can now choose between <code>File</code> and <code>ByteRange</code>. An <code>Automatic</code> option is also available which lets the service make the decision. The actual output segment format, as generated by the service, is displayed on the details page of the video for better transparency.</li>
</ul>
<p>Video Service <a href="https://docs.axinom.com/services/video" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-license-service">DRM License Service<a href="https://docs.axinom.com/blog/mosaic-update-20250411#drm-license-service" class="hash-link" aria-label="Direct link to DRM License Service" title="Direct link to DRM License Service" translate="no">​</a></h2>
<ul>
<li class="">Added a feature to prevent token reuse. The feature can be enabled via the Entitlement Message: license_server.access_control.prevent_drm_message_reuse = true (default: false). It requires an 'id' to be set for each Axinom DRM License Service Message.</li>
</ul>
<p>Applies to:</p>
<ul>
<li class="">FairPlay API 6.23.0</li>
<li class="">Widevine API 6.28.0</li>
<li class="">PlayReady API 6.22.0</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="encoding-service">Encoding Service<a href="https://docs.axinom.com/blog/mosaic-update-20250411#encoding-service" class="hash-link" aria-label="Direct link to Encoding Service" title="Direct link to Encoding Service" translate="no">​</a></h2>
<p>New release 2.47 of <a href="https://docs.axinom.com/services/encoding" target="_blank" rel="noopener noreferrer" class="">Axinom Encoding Service</a>.</p>
<ul>
<li class="">Reduce the frequency of progress messages being sent.</li>
<li class="">CMAF with chunks in addition to byte-range segments</li>
<li class="">Descriptive Audio support</li>
</ul>
<p>Descriptive Audio is an additional audio narration track that describes visual elements such as actions, settings, and expressions, making the content accessible to individuals who are blind or visually impaired. While standard audio delivers the core content, descriptive audio enhances understanding by filling in the visual gaps.</p>
<p>See <a href="https://docs.axinom.com/services/encoding/general/encoding-release-notes" target="_blank" rel="noopener noreferrer" class="">Axinom Encoding Release Notes</a> for more info.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="DRM" term="DRM"/>
        <category label="Encoding" term="Encoding"/>
        <category label="Mosaic" term="Mosaic"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 11 Mar]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20250311</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20250311"/>
        <updated>2025-03-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Localization Service R118</li>
<li class="">Hosting Service R118</li>
<li class="">Image Service R118</li>
<li class="">Media Service R118</li>
<li class="">Video Service R118</li>
<li class="">Encoding Service 2.45</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tls-10--tls-11-deprecation-for-azure-storages">TLS 1.0 &amp; TLS 1.1 deprecation for Azure Storages<a href="https://docs.axinom.com/blog/mosaic-update-20250311#tls-10--tls-11-deprecation-for-azure-storages" class="hash-link" aria-label="Direct link to TLS 1.0 &amp; TLS 1.1 deprecation for Azure Storages" title="Direct link to TLS 1.0 &amp; TLS 1.1 deprecation for Azure Storages" translate="no">​</a></h2>
<p>To align with industry best practices and enhance security, on the <del>30th of September 2025</del> <strong>3rd of September 2025</strong> we plan to enforce TLS 1.2 as the minimum required version for all connections made to Azure Storage Accounts.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-localization-service">🌍 Localization Service<a href="https://docs.axinom.com/blog/mosaic-update-20250311#-localization-service" class="hash-link" aria-label="Direct link to 🌍 Localization Service" title="Direct link to 🌍 Localization Service" translate="no">​</a></h2>
<ul>
<li class="">Custom Editorial Experience</li>
</ul>
<p>We've added the option for a custom editorial experience in the Localization Service. This feature allows you to define custom components for viewing and editing localized values. You can use Piral extensions provided by other managed services or create your own custom components. To find out more about the feature, please check the <a href="https://docs.axinom.com/services/localization/features/custom-editorial-experience" target="_blank" rel="noopener noreferrer" class="">Custom Editorial Experience</a>.</p>
<p><img decoding="async" loading="lazy" alt="Localization Station with a custom Image assignment component" src="https://docs.axinom.com/assets/images/R118-custom-localization-f0a65de04f5c5801737e67d21368bfdb.png" width="1889" height="746" class="img_ev3q"></p>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r118-march-11-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Localization Service <a href="https://docs.axinom.com/services/localization" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hosting-service">Hosting Service<a href="https://docs.axinom.com/blog/mosaic-update-20250311#hosting-service" class="hash-link" aria-label="Direct link to Hosting Service" title="Direct link to Hosting Service" translate="no">​</a></h2>
<ul>
<li class="">Added dedicated buttons to <code>Deploy</code>, <code>Re-Deploy</code>, <code>Undeploy</code> or <code>Upgrade</code> customizable services from their detail station.</li>
</ul>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r118-march-11-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Hosting Service <a href="https://docs.axinom.com/platform/hosting/deploy-a-customized-service" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="image-service">Image Service<a href="https://docs.axinom.com/blog/mosaic-update-20250311#image-service" class="hash-link" aria-label="Direct link to Image Service" title="Direct link to Image Service" translate="no">​</a></h2>
<ul>
<li class="">The image service now provides a new Piral Extension: <code>SingleImageSelectField</code> Which can be used in cases where only a single image should be selected. For example on customized localization experiences <a href="https://docs.axinom.com/services/localization/features/custom-editorial-experience" target="_blank" rel="noopener noreferrer" class="">like this</a>.</li>
</ul>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r118-march-11-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Image Service <a href="https://docs.axinom.com/services/image" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="media-service">Media Service<a href="https://docs.axinom.com/blog/mosaic-update-20250311#media-service" class="hash-link" aria-label="Direct link to Media Service" title="Direct link to Media Service" translate="no">​</a></h2>
<ul>
<li class="">Added the <code>SingleImageSelectField</code>, now provided by the Image Service, to the ExtensionsContext.</li>
</ul>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r118-march-11-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Media Service <a href="https://docs.axinom.com/services/media" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20250311#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<ul>
<li class="">Video Thumbnails are now also supported for HLS streams. To find out more have a look at the <a href="https://docs.axinom.com/services/encoding/encoding-api/section-thumbnails" target="_blank" rel="noopener noreferrer" class="">Thumbnails Generation</a> documentation.</li>
<li class="">Added the option to select specific audio and subtitle streams as well as specific video bitrates on the video players within the Video Service workflows. The players also support full-screen mode now.</li>
<li class="">Added a new optional property <a href="https://mosaic-typedocs.axinom.net/interfaces/_axinom_mosaic_messages.RegisterCuePointsCommand.html#remove_missing" target="_blank" rel="noopener noreferrer" class=""><code>remove_missing</code></a> to the <code>RegisterCuePointsCommand</code>. If set to <code>true</code> cue-points that are not declared on the message but exist for this video on the service will be removed.</li>
</ul>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r118-march-11-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Video Service <a href="https://docs.axinom.com/services/video" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="encoding-service">Encoding Service<a href="https://docs.axinom.com/blog/mosaic-update-20250311#encoding-service" class="hash-link" aria-label="Direct link to Encoding Service" title="Direct link to Encoding Service" translate="no">​</a></h2>
<p>New release 2.45 of <a href="https://docs.axinom.com/services/encoding" target="_blank" rel="noopener noreferrer" class="">Axinom Encoding Service</a>.</p>
<ul>
<li class="">Thumbnails feature is now fully available with HLS using VTT files (as HLS, unlike DASH, doesn't offer a standard way to add thumbnails). For details refer to <a href="https://docs.axinom.com/services/encoding/encoding-api/section-thumbnails" target="_blank" rel="noopener noreferrer" class="">https://docs.axinom.com/services/encoding/encoding-api/section-thumbnails</a></li>
</ul>
<p>See <a href="https://docs.axinom.com/services/encoding/general/encoding-release-notes" target="_blank" rel="noopener noreferrer" class="">Axinom Encoding Release Notes</a> for more info.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="Mosaic" term="Mosaic"/>
        <category label="DRM" term="DRM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tutorial: Setup Mosaic Media Template]]></title>
        <id>https://docs.axinom.com/blog/setup-media-template-tutorial</id>
        <link href="https://docs.axinom.com/blog/setup-media-template-tutorial"/>
        <updated>2025-03-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A new video-tutorial explaining step-by-step the setup of the Mosaic Media Template.]]></summary>
        <content type="html"><![CDATA[<p>A new video-tutorial explaining step-by-step the setup of the Mosaic Media Template.</p>
<div><video class="axinom-web-player" width="100%" height="100%" poster="/img/video-loading.png"></video></div>
<!-- -->
<p>More details on the <a href="https://docs.axinom.com/platform/media-template/" target="_blank" rel="noopener noreferrer" class="">Mosaic Media Template</a> can be found in the documentation.</p>]]></content>
        <author>
            <name>Benjamin Schwendner</name>
            <email>schwendner@axinom.com</email>
            <uri>https://www.axinom.com/contact/benjamin</uri>
        </author>
        <category label="Documentation" term="Documentation"/>
        <category label="DRM" term="DRM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mosaic update 25 Feb]]></title>
        <id>https://docs.axinom.com/blog/mosaic-update-20250225</id>
        <link href="https://docs.axinom.com/blog/mosaic-update-20250225"/>
        <updated>2025-02-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.]]></summary>
        <content type="html"><![CDATA[<p>Axinom releases new features and updates for Mosaic and all included service on a regular base. Here is a summary over the last two weeks.</p>
<p>Latest releases:</p>
<ul>
<li class="">Video Service R116</li>
<li class="">Hosting Service R116</li>
<li class="">Localization Service R116</li>
<li class="">DRM Service - FairPlay API 6.22.0</li>
<li class="">DRM Service - PlayReady 6.21.2</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-service">Video Service<a href="https://docs.axinom.com/blog/mosaic-update-20250225#video-service" class="hash-link" aria-label="Direct link to Video Service" title="Direct link to Video Service" translate="no">​</a></h2>
<ul>
<li class="">Target VMAF can now be set when selecting the <a href="https://docs.axinom.com/services/encoding/howto/perscene-encoding/" target="_blank" rel="noopener noreferrer" class="">PerScene</a> encoding mode, giving more control over the quality and size of the produced video.</li>
</ul>
<p>See also <a href="https://docs.axinom.com/services/encoding/technical-articles/perscene-comparison/" target="_blank" rel="noopener noreferrer" class="">Per-Scene Encoding in Test: Video Quality and Streaming Costs</a>.</p>
<ul>
<li class="">Many further small UX improvements</li>
</ul>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r116-february-13-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Video Service <a href="https://docs.axinom.com/services/video" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hosting-service">Hosting Service<a href="https://docs.axinom.com/blog/mosaic-update-20250225#hosting-service" class="hash-link" aria-label="Direct link to Hosting Service" title="Direct link to Hosting Service" translate="no">​</a></h2>
<ul>
<li class="">When generating SAS tokens for storage provided by the hosting service, the user can now select the permissions that the token should have (<code>list</code>, <code>read</code>, <code>write</code>, <code>delete</code>, <code>add</code>, <code>create</code>), as well as the start and end date of the token.</li>
</ul>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r116-february-13-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Hosting Service <a href="https://docs.axinom.com/platform/hosting/deploy-customizable-service/deploy-customizable-sevice" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="localization-service">Localization Service<a href="https://docs.axinom.com/blog/mosaic-update-20250225#localization-service" class="hash-link" aria-label="Direct link to Localization Service" title="Direct link to Localization Service" translate="no">​</a></h2>
<ul>
<li class="">Improved error handling</li>
</ul>
<p>Soon: support for custom controls for localization.</p>
<p>See <a href="https://docs.axinom.com/general/release-notes/mosaic-release-notes#r116-february-13-2025" target="_blank" rel="noopener noreferrer" class="">full release notes</a>.</p>
<p>Localization Service <a href="https://docs.axinom.com/services/localization" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drm-service">DRM Service<a href="https://docs.axinom.com/blog/mosaic-update-20250225#drm-service" class="hash-link" aria-label="Direct link to DRM Service" title="Direct link to DRM Service" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="fairplay-api-6220-playready-api-6212">FairPlay API 6.22.0, PlayReady API 6.21.2<a href="https://docs.axinom.com/blog/mosaic-update-20250225#fairplay-api-6220-playready-api-6212" class="hash-link" aria-label="Direct link to FairPlay API 6.22.0, PlayReady API 6.21.2" title="Direct link to FairPlay API 6.22.0, PlayReady API 6.21.2" translate="no">​</a></h3>
<p>Changes for both APIs:</p>
<ul>
<li class="">White-listed Common Media Client Data (<a href="https://docs.axinom.com/general/glossary#cmcd" target="_blank" rel="noopener noreferrer" class="">CMCD</a>) request headers for <a href="https://docs.axinom.com/general/glossary#cors" target="_blank" rel="noopener noreferrer" class="">CORS</a>.</li>
</ul>
<p>See <a class="" href="https://docs.axinom.com/services/drm/general/release-notes/fairplay-release-notes#fairplay-api-6220-february-25-2025">Axinom DRM Release Notes</a> for more info.</p>
<p>DRM License Service <a href="https://docs.axinom.com/services/drm/license-service" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>]]></content>
        <author>
            <name>Grigory Grin</name>
            <email>grin@axinom.com</email>
            <uri>https://www.axinom.com/contact/grigory</uri>
        </author>
        <category label="Release" term="Release"/>
        <category label="Mosaic" term="Mosaic"/>
        <category label="DRM" term="DRM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DRM Policy Tester]]></title>
        <id>https://docs.axinom.com/blog/drm-policy-tester</id>
        <link href="https://docs.axinom.com/blog/drm-policy-tester"/>
        <updated>2025-02-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Try out our new tool: DRM Policy Tester.]]></summary>
        <content type="html"><![CDATA[<p>Try out our new tool: <a href="https://tools.axinom.com/drmpolicytester" target="_blank" rel="noopener noreferrer" class="">DRM Policy Tester</a>.</p>
<p>Using this tool, you can select various entitlement options with UI,
see the resulting <a href="https://docs.axinom.com/services/drm/license-service/entitlement-message" target="_blank" rel="noopener noreferrer" class="">entitlement message</a> data structure,
and play a test vector directly using Axinom Media Tools.</p>
<p><img decoding="async" loading="lazy" alt="DRM Policy Tester" src="https://docs.axinom.com/assets/images/drm-policy-tester-40f1eb22543e9ca498b1f7f85828fd01.png" width="1464" height="1776" class="img_ev3q"></p>
<!-- -->
<p>It's especially useful if you want to check the impact different DRM policies have on your playback.</p>
<p>Check <a href="https://docs.axinom.com/services/drm/technical-articles/drm-best-practices/" target="_blank" rel="noopener noreferrer" class="">DRM Security Best Practices</a> to find out why the configuration of the entitlement message is important.</p>]]></content>
        <author>
            <name>Johannes Jauch</name>
            <email>jauch@axinom.com</email>
            <uri>https://www.axinom.com/contact/johannes</uri>
        </author>
        <category label="DRM" term="DRM"/>
        <category label="Security" term="Security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DRM Security Best Practices]]></title>
        <id>https://docs.axinom.com/blog/drm-security-best-practices</id>
        <link href="https://docs.axinom.com/blog/drm-security-best-practices"/>
        <updated>2025-02-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Video and streaming businesses turn to Digital Rights Management (DRM) to secure their content, but simply adding DRM is not enough. The effectiveness of DRM depends on how it is implemented and how well it is integrated into a broader security strategy. Poor implementation can lead to vulnerabilities that pirates exploit, negating DRM’s intended purpose.]]></summary>
        <content type="html"><![CDATA[<p>Video and streaming businesses turn to Digital Rights Management (DRM) to secure their content, but simply adding DRM is not enough. The effectiveness of DRM depends on how it is implemented and how well it is integrated into a broader security strategy. Poor implementation can lead to vulnerabilities that pirates exploit, negating DRM’s intended purpose.</p>
<p>Our new article <a href="https://docs.axinom.com/services/drm/technical-articles/drm-best-practices/" target="_blank" rel="noopener noreferrer" class="">DRM Security Best Practices</a> highlights best practices to maximize DRM security and avoid common pitfalls.</p>
<!-- -->
<p>Let's summarize some of the best practices here:</p>
<ul>
<li class="">Limit authorization to a specific key (or set of keys)</li>
<li class="">Use unique content encryption keys for each asset</li>
<li class="">Limit the duration of the entitlement</li>
<li class="">Bind entitlement message to the client</li>
<li class="">Apply proper DRM policies</li>
<li class="">Use unique content encryption keys for each video profile</li>
<li class="">Implement Authorization Logic</li>
<li class="">Protect Communication Key</li>
<li class="">Use DRM Proxy Mode</li>
<li class="">Analyze Logs</li>
</ul>
<p>For details, read the <a href="https://docs.axinom.com/services/drm/technical-articles/drm-best-practices/" target="_blank" rel="noopener noreferrer" class="">full article</a>.</p>]]></content>
        <author>
            <name>Johannes Jauch</name>
            <email>jauch@axinom.com</email>
            <uri>https://www.axinom.com/contact/johannes</uri>
        </author>
        <category label="DRM" term="DRM"/>
        <category label="Security" term="Security"/>
    </entry>
</feed>