Azure Marketplace

Deploy Blob Web Explorer in your Azure subscription

A step-by-step guide for Azure administrators: prepare your identity provider, run the Marketplace wizard, and give your teams a governed file explorer for Azure Blob Storage.

  • About 30 minutes
  • 3 phases
  • Updated October 2026

Before you start

Blob Web Explorer is deployed as an Azure Managed Application. All resources run in your subscription and Marketplace charges appear on your Azure invoice.

Phase 1

Prepare identity

Create the sign-in App Registration, roles or groups, and Graph permissions. About 15 minutes.

Phase 2

Deploy

Run the Azure Marketplace wizard. About 10 minutes, plus a few minutes of automatic provisioning.

Phase 3

Go live

Add the redirect URI, grant access to the application data storage, assign the first administrator, and connect storage. About 5 minutes.

What you need

  • An Azure subscription with a valid payment method, and an account allowed to create resources and resource groups in it (Contributor on the subscription). The roles of the application's managed identity are assigned automatically inside the managed resource group; you do not need Owner or User Access Administrator.
  • Permission to create App Registrations in your Microsoft Entra ID tenant (or Azure AD B2C tenant), and an administrator able to grant admin consent for the API permissions of step 5 (Microsoft Graph, Azure Service Management, Azure Storage).
  • An existing storage account for the application data, in the same subscription if you use the managed identity method (see Application data storage). With the managed identity method, an account able to assign roles on that storage account after deployment.
  • Outbound HTTPS from Azure App Service to the endpoints listed in Network requirements.
Choose your identity providerMicrosoft Entra ID (recommended for organizations) assigns roles through App Roles and enables Azure Identity connections and Azure Discovery. Azure AD B2C suits external or customer-facing audiences; roles come from B2C groups, and storage is connected with SAS URLs or connection strings.

Phase 1 · Prepare identity

Option A

Microsoft Entra ID with App Roles

1

Create the App Registration

  1. In the Azure portal, open Microsoft Entra ID → App registrations and select New registration.
  2. Name it, for example Blob Web Explorer, and select Accounts in this organizational directory only.
  3. Leave the redirect URI empty — you will add it after deployment — and select Register.
  4. From the Overview page, note the Directory (tenant) ID and the Application (client) ID.
2

Create a client secret

  1. Open Certificates & secrets → New client secret, add a description and an expiry, then select Add.
  2. Copy the secret Value immediately: it is shown only once.
The secret is stored securely in your deployment. Note its expiry date and contact support before it expires to plan the rotation.
3

Enable ID tokens

Open Authentication, check ID tokens under Implicit grant and hybrid flows, and save.

4

Declare the application roles

Open App roles → Create app role three times, with Allowed member types set to Users/Groups:

Display nameValueDescription
Blob Web Explorer AdminBWE.AdminAdministers the deployment and all containers
Blob Web Explorer ContributorBWE.ContributorLinks, manages, and shares containers
Blob Web Explorer ReaderBWE.ReaderWorks with containers shared with them
5

Add API permissions and grant consent

Blob Web Explorer uses this single App Registration for three things: signing users in, reading your directory to help users share containers, and acting on behalf of the signed-in user when they browse Azure or open storage with their own Azure access. Each permission below is tied to a feature; none of them gives Blob Web Explorer access to your storage on its own.

How to add them

  1. Open API permissions → Add a permission.
  2. Microsoft Graph → Delegated permissions: check openid, profile, offline_access, and User.Read (usually already present), then Add permissions.
  3. Microsoft Graph → Application permissions: check User.Read.All, Group.Read.All, and GroupMember.Read.All, then Add permissions.
  4. Recommended: Add a permission → Azure Service Management → Delegated permissions → user_impersonation.
  5. Recommended: Add a permission → Azure Storage → Delegated permissions → user_impersonation.
  6. Select Grant admin consent for <your organization> and confirm. Every line must show the status Granted for <your organization>.

Azure Service Management and Azure Storage are listed under APIs Microsoft uses in older portals and under the Microsoft APIs tab otherwise. Granting admin consent requires a Cloud Application Administrator, Application Administrator, or Privileged Role Administrator.

Sign-in permissions (Microsoft Graph, delegated) — required

PermissionWhy Blob Web Explorer needs itWithout it
openidSigns users in with Microsoft Entra ID and identifies them.Nobody can sign in.
profileDisplays the user's name in the application.Users appear without a display name.
offline_accessLets Blob Web Explorer renew the user's Azure access in the background, so users are not asked to sign in again each time they browse Azure or open a container linked with their Azure identity.Users are sent back to the sign-in page much more often.
User.ReadAdded by Azure to every App Registration: lets a user read their own profile. Keep it.No feature depends on it directly.

Directory permissions (Microsoft Graph, application) — required, admin consent

These are used by the application itself, without a signed-in user, and only to read your directory. Blob Web Explorer never creates, changes, or deletes users or groups.

PermissionWhy Blob Web Explorer needs itWithout it
User.Read.AllFinds people of your organization when a container is shared (search by name or email, suggestions in the sharing form), and is used by the Microsoft Graph health check in Admin settings.No suggestions in the sharing form, user lookup by email fails, and the Graph health check reports an error.
Group.Read.AllLists your Microsoft Entra ID groups so a container can be shared with a whole group.Groups do not appear in the sharing form.
GroupMember.Read.AllReads the members of a group when a container is shared with that group, so that each member receives access.Sharing with a group may give access to nobody. The deployment wizard also asks you to confirm this permission.

Azure access on behalf of the user (delegated) — recommended

With these two permissions, Blob Web Explorer can act only with the Azure rights of the signed-in user and only during their session. They are not roles on your storage: a user without an Azure role on a storage account still cannot see or open it. Blob Web Explorer never uses its own identity to reach your containers.

PermissionWhy Blob Web Explorer needs itWithout it
Azure Service Management → user_impersonationDiscover from Azure: lists the subscriptions, storage accounts, and containers the user can see in Azure, and, when the user's Azure role allows it, reads the storage account keys to create the container link.Discover from Azure is unavailable. Containers can still be linked manually with a SAS URL or a connection string.
Azure Storage → user_impersonationOpens storage with the user's own Azure data roles (Storage Blob Data Reader or Contributor): containers linked with Azure Identity and Personal links, read/write detection when a container is linked, and links signed with the user's Azure account (7 days maximum) created by Discover from Azure.Azure Identity links and links based on data roles fail; users with only data roles must generate a SAS themselves and use Link with a SAS URL you generated. Links created from storage account keys still work.
Grant admin consent even for delegated permissionsAzure lists the two user_impersonation permissions as not requiring admin consent, but many organizations block user consent. In that case users see an Approval required screen, or the error AADSTS65001, when they use Discover from Azure or open a container with their Azure identity. Granting admin consent once in step 5 avoids this for everyone.

Final check

API permissions page of the App Registration: Azure Service Management user_impersonation and Azure Storage user_impersonation (delegated), Microsoft Graph Group.Read.All, GroupMember.Read.All and User.Read.All (application), offline_access, openid, profile and User.Read (delegated), all granted
Expected result in API permissions: nine permissions, all with the status Granted for <your organization>.
APIPermissionTypeStatus expected
Microsoft Graphopenid, profile, offline_access, User.ReadDelegatedGranted
Microsoft GraphUser.Read.All, Group.Read.All, GroupMember.Read.AllApplicationGranted (admin consent required)
Azure Service Managementuser_impersonationDelegatedGranted (recommended)
Azure Storageuser_impersonationDelegatedGranted (recommended)
The deployment wizard reuses this App Registration for both sign-in and directory reading: no second registration is needed. Permissions you add or consent to later apply at the users' next sign-in, without redeploying.
Option B

Azure AD B2C with groups

  1. Register the application in your B2C tenantCreate an App Registration for user flows, then note the tenant domain (for example contoso.onmicrosoft.com), the tenant ID, and the application (client) ID.
  2. Create a client secretCopy its value immediately.
  3. Create the sign-up and sign-in user flowThe wizard proposes the name B2C_1_register_signin; use the name of your own flow if it differs.
  4. Create the role groupsCreate BWE_Admin, BWE_Contributor, and BWE_Reader, and add users directly to them.
  5. Add Microsoft Graph permissionsAdd the Application permissions User.Read.All, Group.Read.All, and GroupMember.Read.All, then grant administrator consent. Group membership is read at each sign-in.

Phase 2 · Deploy

Phase 2

Run the Azure Marketplace wizard

6

Basics

In Azure Marketplace, search for Blob Web Explorer, select the plan, then Create. Choose the subscription, a resource group (a new one is recommended), the region, and the names below.

Application name
Name of the managed application resource, shown under Managed applications (for example blobexplorer-finance). Give this name to support when you contact us.
Managed resource group
Resource group that will contain the BlobExplorer resources (web app, monitoring). The application data storage account is yours and stays outside it. The proposed default name can be kept.
7

Application setup

Workspace name (resource prefix)
Not the same as the Application name. Short prefix of 3 to 12 lowercase letters or digits used to name the resources and the web address of your BlobExplorer: https://app-bwe-<workspace>-<suffix>.azurewebsites.net. Use a name that identifies the instance, for example finance. Default: bwe.
Identity provider
Entra ID — App roles or Azure B2C — Groups.
Entra ID fields
Tenant ID, application (client) ID, and client secret from Phase 1. Enter the secret Value, not the Secret ID; the form rejects a client ID identical to the tenant ID.
Azure B2C fields
Tenant domain, tenant ID, application (client) ID, client secret (Value), and user flow name.
Prerequisites confirmation
Confirm that roles (Entra ID) or groups (B2C) exist, that at least one administrator is assigned, and that the Graph permissions have administrator consent.
Redirect URI confirmation
Confirm that you will add the redirect URI after deployment (step 12).
8

Hosting

Choose Create a new plan and select a size:

App Service planRecommended use
B1 – B3 (Basic)Evaluation, development, and testing
S1 – S3 (Standard)Production — S1 is the recommended starting point
P1v3 – P2v3 (Premium v3)Larger teams, heavier usage, or premium App Service requirements

Or choose Use an existing plan: the list only shows Linux App Service plans located in the deployment region with a Basic, Standard or Premium tier. An existing plan stays under your control; scaling it down, stopping it or deleting it affects Blob Web Explorer.

You can change the plan size after deployment. Large uploads (up to 195 GiB) are handled by the web application itself. Confirm the outbound network prerequisites to continue.

In the Network step, keep Public (default) or choose Private to make the application reachable only from your virtual network. See Private network access for the subnets and DNS to prepare beforehand.

9

Application data

Blob Web Explorer stores its own data (users, linked containers, shares, search index, activity) in tables of an existing storage account that you provide. The deployment never creates it. It must be a general-purpose v2 account, Standard tier, with the Table service. Choose how the application connects to it:

Managed identity (recommended)
Select the storage account in the list (accounts of the deployment subscription). No secret is stored. You grant the access after deployment (step 13).
Connection string
Paste the storage account connection string (it must contain the account name and key). It is stored securely in your deployment.
Storage firewallIf the storage account restricts network access, allow the outbound IP addresses of the web application or use VNet integration.

You can change the storage account or the method at any time from Administration → Data storage. Data is not copied automatically.

10

Monitoring

Create a new Application Insights resource (default), select an existing one, or choose not to use Application Insights. Without it, no telemetry or application logs are collected, which makes troubleshooting harder.

11

Review and create

Review the summary, accept the terms, and select Create. The deployment usually completes in a few minutes.

Automatic provisioningOnce the deployment succeeds, BlobExplorer's provisioning service writes the container registry access and the support service key into the application settings of your deployment and restarts the application. You never enter or see these values. Allow a few extra minutes for the first start.

What gets deployed

Resources are created in the managed resource group of your subscription. If you selected an existing App Service plan or Application Insights, that resource is reused and stays where it is. Your application data storage account is never created or modified by the deployment.

ResourceRoleSecurity defaults
App Service plan (Linux)Compute for the applicationNew plan sized in the wizard, or your existing plan
Web AppRuns the Blob Web Explorer container and holds its deployment secrets (client secret, upload key, provisioned credentials) as encrypted application settingsHTTPS only, TLS 1.2, FTPS disabled, system-assigned managed identity; settings not readable from your account
Application InsightsApplication telemetry and logsOptional: new workspace-based resource, your existing one, or none
Role assignmentLets the managed identity read its resource groupReader on the resource group
Private endpoint and private DNS zone (Private network access only)Inbound access from your virtual networkNetwork interface in your subnet; DNS zone privatelink.azurewebsites.net created only if you choose so; your virtual network itself is never modified
Your storage account (not deployed)Application data: users, linked containers, shares, search index, activity logsUnder your control: backup, network rules, retention, keys

Phase 3 · Go live

Phase 3

Complete the setup

12

Add the redirect URI

  1. Open the managed application in the Azure portal, then Parameters and Outputs. Copy webAppUrl and redirectUri.
  2. On your App Registration, open Authentication → Add a platform → Web and paste the redirect URI. It has this form:
https://app-bwe-<workspace>-<suffix>.azurewebsites.net/signin-oidc
Without this step, sign-in fails with AADSTS50011 (reply URL mismatch).
13

Grant access to the application data storage

Only with the managed identity method. The deployment cannot do it because your storage account is outside the managed resource group.

  1. In Parameters and Outputs, copy grantStorageAccessCommand and run it in Azure Cloud Shell (Azure CLI) with an account allowed to assign roles on the storage account. It has this form:
az role assignment create --assignee-object-id <webAppPrincipalId> --assignee-principal-type ServicePrincipal --role "Storage Table Data Contributor" --scope <storage-account-resource-id>

Or, in the portal: storage account → Access control (IAM) → Add role assignment → Storage Table Data Contributor → Managed identity → select the web app (its object ID is the webAppPrincipalId output).

Assign the Table role, not a Blob role. Until the role is assigned and propagated (a few minutes), the application shows an "Application data unavailable" banner; select Check again once done.
14

Assign the first administrator

  • Entra ID: open Enterprise applications, select your application, then Users and groups → Add user/group, and assign BWE.Admin.
  • Azure AD B2C: add the user directly to the BWE_Admin group.

Users without a role can still sign in with Reader access. Assign Contributor or Reader to other users the same way.

15

Sign in and run the setup checklist

Open the webAppUrl, sign in as the administrator, and open Administration → Deployment checklist. The checklist confirms that identity, roles, and configuration are ready. Review Administration → Admin settings for the deployment context.

Connect your storage

Make your first containers available to your teams.

Link a container

From Containers → Link a container (also a button on Home and Manage containers), connect one container with Azure Identity (Entra ID), a SAS URL, or a connection string. With Azure Identity, access follows each user's Azure RBAC.

How to link a container

Azure Discovery

Admins can find and link containers across subscriptions with Containers → Discover from Azure (also a button on Manage containers). Available with Microsoft Entra ID sign-in. Requires the delegated user_impersonation permissions of Azure Service Management and Azure Storage (step 5).

How to use Azure Discovery

Azure roles on your storage

NeedAzure roleScope
List storage accounts (Azure Discovery)ReaderSubscription, resource group, or storage account
Browse and downloadStorage Blob Data ReaderStorage account or container
Upload, rename, move, deleteStorage Blob Data ContributorStorage account or container

Reference

Application data storage

The storage account that holds Blob Web Explorer's own data is yours.

Requirements

  • Existing general-purpose v2 storage account, Standard tier, with the Table service.
  • You are fully responsible for it: backup, network rules, retention, and keys. We have no access to it.
  • Managed identity method: Storage Table Data Contributor assigned to the web application identity on the storage account.
  • Storage firewall: allow the outbound IP addresses of the web application, or, with Private network access, add a private endpoint for the Table service resolvable from your virtual network.

Change the storage later

  1. Open Administration → Data storageThe panel shows the current status, method, and storage account, and the cause of any error.
  2. Choose the methodManaged identity (enter the storage account name or Table endpoint, then grant the role as in step 13) or connection string.
  3. Test the connectionThe test checks that the application can create, write, read, and delete a test entry, and explains any failure (missing role, Blob role instead of Table role, firewall, invalid key, account not found).
  4. SwitchConfirm that data is not copied, then select Use this storage. The change applies immediately, without restart. Copy existing tables yourself beforehand if you need them.
Rotating storage keys (connection string method)Before regenerating a key, switch Blob Web Explorer to a connection string that uses the other key from Administration → Data storage, then regenerate the key that is no longer used. Prefer the managed identity method to avoid key rotation entirely.
If the storage becomes unreachableThe application keeps running. A banner explains the problem; administrators get a link to Administration → Data storage, and other users can report it to support. Help & support (open a case, report a bug, deployment facts) remains available.

Roles

Application roles are managed in your identity provider, not in Azure IAM.

RoleEntra ID App RoleB2C groupCapabilities
AdminBWE.AdminBWE_AdminEverything a Contributor can do, plus Deployment checklist, Admin settings, Discover from Azure (Entra ID sign-in), and visibility on all containers
ContributorBWE.ContributorBWE_ContributorLink, manage, and share own containers; usage & costs; activity log
ReaderBWE.ReaderBWE_ReaderWork with containers shared with them, within the share permission

Role changes take effect at the next sign-in. Full details: Roles & permissions.

Network requirements

Required only if your environment filters outbound traffic (firewall, proxy, forced tunneling).

DestinationPortPurpose
blobwebexplorer.azurecr.io443Container registry login
*.blob.core.windows.net443Container image layers, or service tags AzureContainerRegistry.WestEurope and Storage.WestEurope
func-bwe-supportapi-prd-we.azurewebsites.net443BlobExplorer support service (Customer Hub)
The application image is pulled at every start. If the registry cannot be reached, the application does not start.

Private network access

Keep Blob Web Explorer inside your virtual network with a private endpoint, VNet integration, and private DNS.

Prepare before deploying

  • An existing virtual network in the deployment region. Blob Web Explorer never modifies it.
  • Integration subnet (outbound): delegated to Microsoft.Web/serverFarms, /28 minimum, /26 recommended.
  • Private endpoint subnet (inbound): a regular subnet without delegation.
  • If you reuse an App Service plan already integrated with a virtual network, select that same virtual network.

Private DNS

Create a private DNS zone
A privatelink.azurewebsites.net zone is created with the deployment and linked to your virtual network. Not possible if this network is already linked to a zone with the same name.
Use my existing zone
The application is registered in your privatelink.azurewebsites.net zone, typically in a hub.
I manage the DNS records myself
Create the A records for the application and its .scm name pointing to the private endpoint IP, or let your Azure Policy do it.

The application keeps its azurewebsites.net address and its redirect URI: inside your network, the name resolves to the private IP. Peered networks and on-premises sites must use a DNS resolver that sees the zone.

Outbound traffic

All outbound traffic of the application goes through your virtual network. Allow outbound HTTPS (443) from the integration subnet to:

DestinationPurpose
blobwebexplorer.azurecr.io, *.blob.core.windows.netApplication image
login.microsoftonline.com (or your <tenant>.b2clogin.com), graph.microsoft.comSign-in and roles
management.azure.comDiscover from Azure
func-bwe-supportapi-prd-we.azurewebsites.netSupport service
Application Insights ingestion (or an Azure Monitor Private Link Scope)Telemetry
Your storage accountsThrough their private endpoints (blob and table) resolvable from the virtual network, or their public endpoints
Browsers never connect to your storage directly: files, previews, downloads and uploads go through the application, so private storage endpoints work for every user who can reach the application. With public access disabled, the application console and log stream in the Azure portal are reachable only from your network.

Operations & publisher access

What we can and cannot do in your deployment.

  • Limited management access. As with every Azure Managed Application, we have management access to the managed resource group. It is used only to deliver deployment credentials to the application, restart it, and resolve issues you report.
  • Your data. We do not use this access to read your application data or the content of your storage accounts, unless you ask for it during a support case. Your application data storage account is outside the managed resource group and we have no access to it.
  • Updates. The application runs the current Blob Web Explorer release; restarting the web app applies it. Changes are listed in What's new.
  • Removal. Deleting the managed application deletes its resource group (web app and any monitoring created by the deployment). Your application data storage account and your other storage accounts are not affected.

Contractual terms: Terms of Use — Azure Marketplace.

Troubleshooting

Most first-deployment issues come from identity configuration or network filtering.

SymptomResolution
Sign-in error AADSTS50011Add the exact redirectUri output as a Web redirect URI (step 12), without a trailing slash.
Sign-in error AADSTS700054Enable ID tokens on the App Registration (step 3).
Signed in, but only Reader accessAssign the role or group (step 14), check the Graph admin consent (step 5), then sign out and back in.
Banner "Application data unavailable"Open Administration → Data storage to see the cause. Most often: the Storage Table Data Contributor role is missing or a Blob role was assigned instead (step 13), the storage firewall blocks the application, or the account key was regenerated. Fix it, then select Check again.
The application does not respond right after deploymentProvisioning and the first start can take several minutes. If it persists after 15 minutes, check the network requirements and contact support with the managed application name.
Azure Identity option unavailableIt requires Entra ID sign-in. With Azure AD B2C, use a SAS URL or a connection string.
Azure Discovery or Azure Identity asks for approval, or fails with AADSTS65001Add the delegated Azure Service Management and Azure Storage user_impersonation permissions, grant admin consent (step 5), and check the user's Azure roles.
Client secret about to expireCreate a new secret and contact support to plan the update in your deployment.
Still stuck?Email support@blobexplorer.com with the managed application name, the region, and the exact error message. See all support options.