Search code examples
imageresizerimageflow

ImageFlow.NET server accessing private Azure Blob Storage containers


I want to make sure I understand how ImageFlow.NET server works with images stored on a private Azure Blob Storage container.

Currently, we access images directly from Azure Blob Storage and we need to create a SAS token for images to be available in our frontend apps -- inlcuding mobile apps.

Our primary interest in ImageFlow.NET server is resizing images on demand. Would we still need to generate a SAS token for each image if we use ImageFlow.NET server to handle images for us?

For example, if we were to request a downsized version of image myimage.jpg, which is stored on Azure Blob Storage, do we still need to generate a SAS token or will ImageFlow server simply pull the image and send it to the requesting app without a SAS token?


Solution

  • Imageflow.NET Server has an easy API if you need to change this or hook up a different blob storage provider or design.

    In the default Azure plugin setup, Imageflow authenticates with Azure using the configured credentials to access protected blobs, but clients themselves do not need an SAS token. Imageflow's own access can be restricted via Azure and by configuring the allowed buckets list.

    Often, you need to have authorization for client/browser access as well as for Imageflow getting to blob storage. You can use any of the existing ASP.NET systems and libraries for this as if you're protecting static files or pages, or you can use Imageflow's built-in signing system that is actually quite similar to SAS tokens.

    You can configure Imageflow to require a signature be appended to URLs. There's a utility method for generating those.

    Then it's on you to only give those URLs to users who are allowed to access them.

    Essentially, Imageflow supports any client authentication/authorization system you want to add to the app.

    If you need something customized between Imageflow and Azure, that's also easy to customize (In fact, there's a single file adapter in the example project that implements a different approach for cases where you don't want to limit which buckets Imageflow accesses).