'How to secure the attachment URL getting from cloud services
I have an angular form where the user is uploading the attachment.
On uploading, the attachments are stored in the Azure Storage Account. In return, I am receiving the URL of the attachment.
The URL generated is accessible to the public, Is there a way how I can add my authentication?
Expected Result:
- if a user opens the URL in the browser, it takes to 
auth page. - Where user will be asked to enter username - password
 
Solution 1:[1]
To create a Shared Access Signature (SAS), I used the generateSharedAccessSignature method.
With that, I am using the date helper functions to easily create a SAS that expires after 1 minute.
To be noted: Change the access policy of the container to Private(no anonymous access
accountName, accountKey => get from azure. For ease and security store them in environment files
Run the below command in terminal:
npm install azure-storage
NodeJS Code:
var azure = require('azure-storage');
var blobService = azure.createBlobService(accountName, accountKey);
var startDate = new Date();
var expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 1);
var sharedAccessPolicy = {
    AccessPolicy: {
         Permissions: azure.BlobUtilities.SharedAccessPermissions.READ,
         Start: startDate,
         Expiry: expiryDate
    }
};
var token = blobService.generateSharedAccessSignature(containerName, blobName, sharedAccessPolicy);
var sasUrl = blobService.getUrl(containerName, blobName, token);
Learning resource:
Solution 2:[2]
Yes, you can use a shared access signature token to grant temporal access to a specific file or list of files. But you cannot redirect to your website's "auth" page if a user open's Azure's URL.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | |
| Solution 2 | 
