Skip to content

henrikwh/edgecast-cdn-token-fsharp

 
 

Repository files navigation

page_type languages products name description
sample
csharp
fsharp
azure
azure-cdn
.NET code for generating tokens for "Azure CDN Premium from Verizon" (a.k.a. Edgecast)
This sample demonstrates how to generate tokens for 'Azure CDN Premium from Verizon', so only authorized parties can download an asset from the CDN.

.NET code for generating tokens for "Azure CDN Premium from Verizon" (a.k.a. Edgecast)

This project demonstrates how to generate access tokens for Edgecast in .NET.

The term "Edgecast" refers to the "Verizon Digital Media Services / Edgecast Content Delivery Network CDN", formally known as the "Azure Content Delivery Network Premium from Verizon" in Azure.

The actual implementation in .NET is F#, so you can easily plug it into your .NET core web app, or call it from F# Interactive.

It offers a fluent API for both C# and F#, so token creation is self-explanatory.

F# interactive sample

Just run dotnet fsi ./edgecast.fsx

#r "nuget: BouncyCastle.NetCore, 1.8.8"
#load "edgecastlib/EdgecastCrypto.fs"

open System
open EdgecastCrypto

let inspect msg a =
    printfn "%s: %A" msg a
    a

let key = "primary202109099dc4cf480b17a94f5eef938bdb08c18535bcc777cc0420c29133d0134d635aa78a1e28f6b883619ed5f920bd3cd79bfe10c42b5d96b7eeb84571ceee4cb51d89"

createTokenValidFor (TimeSpan.FromDays(365.0))
|> inspect "token"
|> encrypt key
|> inspect "encrypted"
|> decrypt key
|> inspect "decrypted again"
|> ignore

This creates a result, similar to this:

token: { ExpirationDate = 9/14/2022 4:50:46 PM
  ClientIPAddress = None
  AllowedCountries = ["DE"]
  DeniedCountries = []
  AllowedReferrers = []
  DeniedReferrers = []
  AllowedProtocol = []
  DeniedProtocol = []
  AllowedUrls = ["/assets"] }

encrypted: "6CM31tJXEmlAeh11HC-23FlVO96xW9udR_gCPcoX5uzQXnpQo2ThqPEUHO1AuAuLiCvJ-dijWiZHYZeRmdSUpku6I7twHn1AY0w4oECe9HQm6Z-WiatHKwU"

decrypted again: { ExpirationDate = 9/14/2022 4:50:46 PM
  ClientIPAddress = None
  AllowedCountries = ["DE"]
  DeniedCountries = []
  AllowedReferrers = []
  DeniedReferrers = []
  AllowedProtocol = []
  DeniedProtocol = []
  AllowedUrls = ["/assets"] }

C# sample

using System;
using EdgecastCryptoExtensions;

class Program
{
    static void Main()
    {
        var key = "primary202109099dc4cf480b17a94f5eef938bdb08c18535bcc777cc0420c29133d0134d635aa78a1e28f6b883619ed5f920bd3cd79bfe10c42b5d96b7eeb84571ceee4cb51d89";

        _ = EdgecastCrypto.createTokenValidFor(TimeSpan.FromDays(365.0))
            .AddAllowedCountry("DE")
            .AddAllowedUrl("/assets")
            .Inspect("token")
            .Encrypt(key)
            .Inspect("encrypted")
            .Decrypt(key)
            .Inspect("decrypted");
    }
}

static class Util
{
    internal static T Inspect<T>(this T t, string message)
    {
        Console.Out.WriteLine($"{message}: {t}");
        return t;
    }
}

Links for normative documentation

About

A .NET sample to create tokens for Edgecast Azure CDN

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • F# 87.2%
  • Shell 6.5%
  • C# 6.3%