Utilizando una libreria de Sharepoint Online como CDN

Hace pocos dias se anuncio el soporte de CDN para Office 365 a traves de Sharepoint Online. Esto es una gran ventaja ya que no dependemos de Azure CDN para poder publicar nuestros archivos javascript, css, imagenes, etc.

Primero nos debemos conectar a nuestro tenant:

$username = "myuser@myuser.onmicrosoft.com"
$password = "`password"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $(convertto-securestring $Password -asplaintext -force)
Connect-SPOService -Url https://xyz-admin.sharepoint.com/ -Credential $cred  

Luego ejecutamos Get-SPOTenant para mirar el estado del CDN, como pueden ver esta deshabilitado.

Luego habilitamos el CDN, tambien debemos habilitar para que extensiones:

Set-SPOTenant -PublicCdnEnabled $true`  
Set-SPOTenant -PublicCdnAllowedFileTypes "CSS,EOT,GIF,ICO,JPEG,JPG,JS,MAP,PNG,SVG,TTF,WOFF,TXT"  

Luego debemos definir cual sitio y libreria servira como nuestro CDN, aca recomiendo que se utilice un sitio y libreria para esto:

New-SPOPublicCdnOrigin -Url "https://xyz.sharepoint.com/sites/cdn/cdn/"  

` Para mi caso he creado un sitio de ejemplo CDN y una libreria CDN dentro del sitio.

El resultado es este:

ADVERTENCIA: By enabling this functionality all the files of types CSS,EOT,GIF,ICO,JPEG,JPG,JS,MAP,PNG,SVG,TTF,WOFF,TXT stored in the document libra ry https://xyz.sharepoint.com/sites/cdn/cdn will also be stored in a public CDN. Such content will then be accessible by everyone anonym
ously not monitored nor governed by Microsoft content policies. Resources that are considered sensitive by the company should never be saved in this
document library.

Para obtener las ubicaciones que han sido publicadas como CDN

Get-SPOPublicCdnOrigins  

Y para borrar ubicaciones CDN, debes tener el ID

Remove-SPOPublicCdnOrigin -Identity 1937006161eeae8fe7159…  

Uso del CDN en paginas y personalizaciones.

Despues de haber subido a nuestro CDN los archivos JS, CSS, e imagenes necesarias podemos proceder a utilizarlos en nuestras aplicaciones.

La estructura de las URLs es la siguiente:

https://publiccdn.sharepointonline.com/tenant host name/ID of the public CDN origin/sub-path under the origin

Tambien podamos utilizar un servicio REST para que nos devuelva la URL completa de un recurso:

https://xyz.sharepoint.com/vtibin/publiccdn.ashx/url?itemurl=https://xyz.sharepoint.com/sites/cdn/cdn/hellocdn.js

Resultado:
https://publiccdn.sharepointonline.com/xyz.sharepoint.com/107300523895b88243133295da3fff345c7b3b89cb61f9c271bf21d8d23d9d1fa758ff6c/hellocdn.js

Ahora podemmos utilizar esa URL en nuestras aplicaciones