///// <summary> ///// Fetches the data from Blob Storage and returns a Stream. ///// </summary> ///// <param name="segments"></param> ///// <returns></returns> //[HttpGet] //public Task<HttpResponseMessage> GetAsync(string segments) //{ // return GetDataAsync(segments); //} #region Implementation private IHttpActionResult GetRedirect(string segments) { string[] pathSegments = segments.Split(new[] { "/" }, StringSplitOptions.None); string alias = pathSegments[0]; string containerName = pathSegments[1]; string path = string.Join("/", pathSegments.Skip(2)); // var userId = this.User.Identity.Name; // Akamai var nonce = ((ClaimsIdentity)this.User.Identity).Claims.First(claim => claim.Type == G2OClaimTypes.Nonce); Trace.TraceInformation(string.Format("Logged in via nonce {0}", nonce)); var storage = this.G2OConfiguration.Storage.FirstOrDefault(_ => _.Alias == alias); if (storage == null) { return(NotFound()); } if (!storage.Containers.Any(_ => _ == containerName)) { return(NotFound()); } var blobClient = storage.CloudStorageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference(containerName); // var sasAdHocUri = ContainerUtils.GetSASAdHoc(container, path, validity: TimeSpan.FromMinutes(55)); var sasPolicyUri = ContainerUtils.GetSASUsingPolicy(container, path, validity: TimeSpan.FromDays(31)); bool enforceProtocolEquality = storage.CloudStorageAccount != CloudStorageAccount.DevelopmentStorageAccount; var redirectUri = enforceProtocolEquality ? new UriBuilder(sasPolicyUri) { Scheme = this.Request.RequestUri.Scheme, Port = -1 }.Uri // redirect scheme must be equal to inbound protocol : sasPolicyUri; Trace.TraceInformation(string.Format("Redirecting to {0}", redirectUri.AbsoluteUri)); return(Redirect(redirectUri)); }
public void Configuration(IAppBuilder app, CompositionContainer compositionContainer) { // app.UseWelcomePage(); // app.UseErrorPage(); // app.UseErrorPage(new ErrorPageOptions // { // ShowEnvironment = true, // ShowCookies = true, // ShowExceptionDetails = true, // ShowHeaders = true, // ShowQuery = true, // ShowSourceCode = true // }); // app.Use<AzureStorageProxyOwinMiddleware>(); var proxyConfig = compositionContainer.GetExportedValue <G2OProxyConfiguration>(); ContainerUtils.SetSASPolicies(proxyConfig); app.EnforeG2OAuthentication(keyResolver: proxyConfig.GetKey); this.ConfigureWebApi(app, compositionContainer); }