Sunday, May 5, 2013
Assigning Access Key With Code

Both Azure Storage and Amazon S3 require a couple of security parameters and repository name in order to upload or download a file. The data controller configurations of both adapters require explicit definition of these parameters.

Let’s consider the configuration of an Azure Blob Adapter.

Field: Picture
Storage-System: Azure
Account: northwindproductpictures
Container: pics
Key: e2Wl668b6fEGauS6cOTAHaj7Ut6QfwKdbGY4Vd8yngz40y2f54M5EfZtSNNHYoXW7i7+kZAfFJrg==
Path-Template: Products/{ProductID}-{PictureFileName}

The application framework allows providing default values for Account, Container, and Key.

Start the app generator. Select your project and click Develop. The project will be opened in Visual Studio. In the Solution Explorer, right-click on ~\App_Code\Data, and press Add | Add New Item…

Adding a new item to the Data folder in a Code On Time Web Site Factory project.

Select Class from the list, specify a name, and press OK to add the new file.

Adding a class file to the project.

Replace the code base with the following. Use your own key instead of the highlighted text.

C#:

using System;

namespace MyCompany.Data
{
    public partial class AzureBlobAdapter
    {
        public override string Key
        {
            get
            {
                return "ENTER KEY HERE";
            }
        }
    }
}

Visual Basic:

Imports Microsoft.VisualBasic

Namespace MyCompany.Data
    Partial Public Class AzureBlobAdapter
        Public Overrides Property Key As String
            Get
                Return "ENTER KEY HERE"
            End Get
            Set(value As String)
                MyBase.Key = value
            End Set
        End Property
    End Class
End Namespace
Save the file, and activate the Project Designer. In the Project Explorer, switch to the Controllers tab and double-click on Products. Change the Blob Adapter Configuration as shown below.

Field: Picture
Storage-System: Azure
Account: northwindproductpictures
Container: pics
Path-Template: Products/{ProductID}-{PictureFileName}

The application framework will now use the key explicitly returned by the AzureBlobAdapter.Key property. 
The image thumbnails are loaded from Azure Storage using the new key.

The Account and Container properties may also be overridden in a similar fashion to further simplify the adapter configuration. Multiple virtual binary fields may share the same Account, Container, and Key. The implementation of the properties may optionally read values from the database depending on the user identity, role, or other conditions.

The Amazon S3 Adapter allows overriding properties AccessKeyID, SecretAccessKey, and Bucket.