def generate_shared_access_signature(self,
                                         table_name,
                                         shared_access_policy=None,
                                         sas_version=X_MS_VERSION):
        '''
        Generates a shared access signature for the table.
        Use the returned signature with the sas_token parameter of TableService.

        table_name:
            Required. Name of table.
        shared_access_policy:
            Instance of SharedAccessPolicy class.
        sas_version:
            x-ms-version for storage service, or None to get a signed query
            string compatible with pre 2012-02-12 clients, where the version
            is not included in the query string.
        '''
        _validate_not_none('table_name', table_name)
        _validate_not_none('shared_access_policy', shared_access_policy)
        _validate_not_none('self.account_name', self.account_name)
        _validate_not_none('self.account_key', self.account_key)

        sas = SharedAccessSignature(self.account_name, self.account_key)
        return sas.generate_signed_query_string(
            table_name,
            None,
            shared_access_policy,
            sas_version,
            table_name=table_name,
        )
    def generate_shared_access_signature(self, table_name,
                                         shared_access_policy=None,
                                         sas_version=X_MS_VERSION):
        '''
        Generates a shared access signature for the table.
        Use the returned signature with the sas_token parameter of TableService.

        table_name:
            Required. Name of table.
        shared_access_policy:
            Instance of SharedAccessPolicy class.
        sas_version:
            x-ms-version for storage service, or None to get a signed query
            string compatible with pre 2012-02-12 clients, where the version
            is not included in the query string.
        '''
        _validate_not_none('table_name', table_name)
        _validate_not_none('shared_access_policy', shared_access_policy)
        _validate_not_none('self.account_name', self.account_name)
        _validate_not_none('self.account_key', self.account_key)

        sas = SharedAccessSignature(self.account_name, self.account_key)
        return sas.generate_signed_query_string(
            table_name,
            None,
            shared_access_policy,
            sas_version,
            table_name=table_name,
        )
Beispiel #3
0
 def url(self, name):
     ap = AccessPolicy(expiry=(timezone.datetime.utcnow() + timezone.timedelta(seconds=600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \
                       start=(timezone.datetime.utcnow() + timezone.timedelta(seconds=-600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \
                       permission='r')
     sap = SharedAccessPolicy(ap)
     sas = SharedAccessSignature(self.account_name, self.account_key)
     url = sas.generate_signed_query_string(path=self.azure_container + '/' + name, resource_type='b', shared_access_policy=sap)
     
     return self.connection.make_blob_url(self.azure_container, name) + "?" + url
Beispiel #4
0
    def url(self, name):
        ap = AccessPolicy(expiry=(timezone.datetime.utcnow() + timezone.timedelta(seconds=600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \
                          start=(timezone.datetime.utcnow() + timezone.timedelta(seconds=-600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \
                          permission='r')
        sap = SharedAccessPolicy(ap)
        sas = SharedAccessSignature(self.account_name, self.account_key)
        url = sas.generate_signed_query_string(path=self.azure_container +
                                               '/' + name,
                                               resource_type='b',
                                               shared_access_policy=sap)

        return self.connection.make_blob_url(self.azure_container,
                                             name) + "?" + url
Beispiel #5
0
def sasUrl(account, key, container, permission):

    start = datetime.utcnow()
    expiry = start + timedelta(hours=24)

    accss_plcy = AccessPolicy()
    accss_plcy.start = start.strftime('%Y-%m-%dT%H:%M:%SZ')
    accss_plcy.expiry = expiry.strftime('%Y-%m-%dT%H:%M:%SZ')
    accss_plcy.permission = permission

    sas = SharedAccessSignature(account_name=account, account_key=key)

    query = sas.generate_signed_query_string(
        container,
        ResourceType.RESOURCE_CONTAINER,
        SharedAccessPolicy(accss_plcy),
    )

    return query
Beispiel #6
0
def sasUrl(account, key, container, permission):

    start = datetime.utcnow()
    expiry = start + timedelta(hours = 24)

    accss_plcy = AccessPolicy()
    accss_plcy.start = start.strftime('%Y-%m-%dT%H:%M:%SZ')
    accss_plcy.expiry = expiry.strftime('%Y-%m-%dT%H:%M:%SZ')
    accss_plcy.permission = permission

    sas = SharedAccessSignature(account_name=account, account_key=key)

    query = sas.generate_signed_query_string(
        container,
        ResourceType.RESOURCE_CONTAINER,
        SharedAccessPolicy(accss_plcy),
        )

    return query
class SharedAccessSignatureTest(AzureTestCase):

    def setUp(self):
        self.sas = SharedAccessSignature(account_name=DEV_ACCOUNT_NAME,
                                         account_key=DEV_ACCOUNT_KEY)

    def tearDown(self):
        return super(SharedAccessSignatureTest, self).tearDown()

    def test_generate_signature_container(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        signature = self.sas._generate_signature('images',
                                                 sap,
                                                 X_MS_VERSION,
                                                 None, None, None, None, None)
        self.assertEqual(signature,
                         'Md+SHy9BQNucdHnmDOEwlAkIWU5YxwlTq6gA9yJKE6w=')

    def test_generate_signature_blob(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11T11:03:40Z'
        accss_plcy.expiry = '2011-10-12T11:53:40Z'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)

        signature = self.sas._generate_signature('images/pic1.png',
                                                 sap,
                                                 X_MS_VERSION,
                                                 None,
                                                 'file; attachment',
                                                 None,
                                                 None,
                                                 'binary')
        self.assertEqual(signature,
                         'uHckUC6T+BwUsc+DgrreyIS1k6au7uUd7LSSs/z+/+w=')

    def test_blob_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'w'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string('images/pic1.png',
                                                        RESOURCE_BLOB,
                                                        sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'w')
        self.assertEqual(qry_str[SIGNED_SIGNATURE],
                         'Fqt8tNcyUOp30qYRtSFNcImrRMcxlk6IF17O4l96KT8=')

    def test_container_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        qry_str = self.sas.generate_signed_query_string('images',
                                                        RESOURCE_CONTAINER,
                                                        sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'r')
        self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==')
        self.assertEqual(qry_str[SIGNED_SIGNATURE],
                         'Md+SHy9BQNucdHnmDOEwlAkIWU5YxwlTq6gA9yJKE6w=')

    def test_sign_request(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string('images/pic1.png',
                                                        RESOURCE_BLOB,
                                                        sap)

        permission = Permission()
        permission.path = '/images/pic1.png'
        permission.query_string = qry_str
        self.sas.permission_set = [permission]

        web_rsrc = WebResource()
        web_rsrc.properties[SIGNED_RESOURCE_TYPE] = RESOURCE_BLOB
        web_rsrc.properties[SHARED_ACCESS_PERMISSION] = 'r'
        web_rsrc.path = '/images/pic1.png?comp=metadata'
        web_rsrc.request_url = '/images/pic1.png?comp=metadata'

        web_rsrc = self.sas.sign_request(web_rsrc)

        self.assertEqual(web_rsrc.request_url,
                         '/images/pic1.png?comp=metadata&' +
                         self.sas._convert_query_string(qry_str))
class SharedAccessSignatureTest(AzureTestCase):

    def setUp(self):
        self.sas = SharedAccessSignature(account_name=DEV_ACCOUNT_NAME, 
                                         account_key=DEV_ACCOUNT_KEY)
    def tearDown(self):
        return super(SharedAccessSignatureTest, self).tearDown()
        
    def test_generate_signature_container(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        signature = self.sas._generate_signature('images', 
                                                 RESOURCE_CONTAINER, 
                                                 sap)
        self.assertEqual(signature, 
                         'VdlALM4TYEYYNf94Bvt3dn48TsA01wk45ltwP3zeKp4=')

    def test_generate_signature_blob(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11T11:03:40Z'
        accss_plcy.expiry = '2011-10-12T11:53:40Z'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)

        signature = self.sas._generate_signature('images/pic1.png', 
                                                 RESOURCE_BLOB, 
                                                 sap)
        self.assertEqual(signature, 
                         '7NIEip+VOrQ5ZV80pORPK1MOsJc62wwCNcbMvE+lQ0s=')

    def test_blob_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'w'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string('images/pic1.png',
                                                        RESOURCE_BLOB, 
                                                        sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'w')
        self.assertEqual(qry_str[SIGNED_SIGNATURE], 
                         'k8uyTrn3pgLXuhwgZhxeAH6mZ/es9k2vqHPJEuIH4CE=')

    def test_container_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        qry_str = self.sas.generate_signed_query_string('images', 
                                                        RESOURCE_CONTAINER, 
                                                        sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'r')
        self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==')
        self.assertEqual(qry_str[SIGNED_SIGNATURE], 
                         'VdlALM4TYEYYNf94Bvt3dn48TsA01wk45ltwP3zeKp4=')

    def test_sign_request(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string('images/pic1.png', 
                                                   RESOURCE_BLOB, 
                                                   sap)
        
        permission = Permission()
        permission.path = '/images/pic1.png'
        permission.query_string = qry_str
        self.sas.permission_set = [permission]

        web_rsrc = WebResource()
        web_rsrc.properties[SIGNED_RESOURCE_TYPE] = RESOURCE_BLOB
        web_rsrc.properties[SHARED_ACCESS_PERMISSION] = 'r'
        web_rsrc.path = '/images/pic1.png?comp=metadata'
        web_rsrc.request_url = '/images/pic1.png?comp=metadata'

        web_rsrc = self.sas.sign_request(web_rsrc)

        self.assertEqual(web_rsrc.request_url, 
                         '/images/pic1.png?comp=metadata&' + 
                         self.sas._convert_query_string(qry_str))
Beispiel #9
0
class SharedAccessSignatureTest(AzureTestCase):
    def setUp(self):
        self.sas = SharedAccessSignature(account_name=DEV_ACCOUNT_NAME,
                                         account_key=DEV_ACCOUNT_KEY)

    def tearDown(self):
        return super(SharedAccessSignatureTest, self).tearDown()

    def test_generate_signature_container(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        signature = self.sas._generate_signature('images', sap, X_MS_VERSION,
                                                 None, None, None, None, None)
        self.assertEqual(signature,
                         'Md+SHy9BQNucdHnmDOEwlAkIWU5YxwlTq6gA9yJKE6w=')

    def test_generate_signature_blob(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11T11:03:40Z'
        accss_plcy.expiry = '2011-10-12T11:53:40Z'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)

        signature = self.sas._generate_signature('images/pic1.png', sap,
                                                 X_MS_VERSION, None,
                                                 'file; attachment', None,
                                                 None, 'binary')
        self.assertEqual(signature,
                         'uHckUC6T+BwUsc+DgrreyIS1k6au7uUd7LSSs/z+/+w=')

    def test_blob_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'w'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string(
            'images/pic1.png', RESOURCE_BLOB, sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'w')
        self.assertEqual(qry_str[SIGNED_SIGNATURE],
                         'Fqt8tNcyUOp30qYRtSFNcImrRMcxlk6IF17O4l96KT8=')

    def test_container_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        qry_str = self.sas.generate_signed_query_string(
            'images', RESOURCE_CONTAINER, sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'r')
        self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==')
        self.assertEqual(qry_str[SIGNED_SIGNATURE],
                         'Md+SHy9BQNucdHnmDOEwlAkIWU5YxwlTq6gA9yJKE6w=')

    def test_sign_request(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string(
            'images/pic1.png', RESOURCE_BLOB, sap)

        permission = Permission()
        permission.path = '/images/pic1.png'
        permission.query_string = qry_str
        self.sas.permission_set = [permission]

        web_rsrc = WebResource()
        web_rsrc.properties[SIGNED_RESOURCE_TYPE] = RESOURCE_BLOB
        web_rsrc.properties[SHARED_ACCESS_PERMISSION] = 'r'
        web_rsrc.path = '/images/pic1.png?comp=metadata'
        web_rsrc.request_url = '/images/pic1.png?comp=metadata'

        web_rsrc = self.sas.sign_request(web_rsrc)

        self.assertEqual(
            web_rsrc.request_url, '/images/pic1.png?comp=metadata&' +
            self.sas._convert_query_string(qry_str))
class SharedAccessSignatureTest(AzureTestCase):

    def setUp(self):
        self.sas = SharedAccessSignature(account_name=DEV_ACCOUNT_NAME,
                                         account_key=DEV_ACCOUNT_KEY)

    def tearDown(self):
        return super(SharedAccessSignatureTest, self).tearDown()

    def test_generate_signature_container(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        signature = self.sas._generate_signature('images',
                                                 sap,
                                                 X_MS_VERSION)
        self.assertEqual(signature,
                         '1AWckmWSNrNCjh9krPXoD4exAgZWQQr38gG6z/ymkhQ=')

    def test_generate_signature_blob(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11T11:03:40Z'
        accss_plcy.expiry = '2011-10-12T11:53:40Z'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)

        signature = self.sas._generate_signature('images/pic1.png',
                                                 sap,
                                                 X_MS_VERSION)
        self.assertEqual(signature,
                         'ju4tX0G79vPxMOkBb7UfNVEgrj9+ZnSMutpUemVYHLY=')

    def test_blob_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'w'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string('images/pic1.png',
                                                        RESOURCE_BLOB,
                                                        sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'w')
        self.assertEqual(qry_str[SIGNED_SIGNATURE],
                         '8I8E8TImfR2TIAcMDq8rF+IhhYyvowXpxSfF1kxnWLQ=')

    def test_container_signed_query_string(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        signed_identifier = 'YWJjZGVmZw=='
        sap = SharedAccessPolicy(accss_plcy, signed_identifier)
        qry_str = self.sas.generate_signed_query_string('images',
                                                        RESOURCE_CONTAINER,
                                                        sap)
        self.assertEqual(qry_str[SIGNED_START], '2011-10-11')
        self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12')
        self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER)
        self.assertEqual(qry_str[SIGNED_PERMISSION], 'r')
        self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==')
        self.assertEqual(qry_str[SIGNED_SIGNATURE],
                         '1AWckmWSNrNCjh9krPXoD4exAgZWQQr38gG6z/ymkhQ=')

    def test_sign_request(self):
        accss_plcy = AccessPolicy()
        accss_plcy.start = '2011-10-11'
        accss_plcy.expiry = '2011-10-12'
        accss_plcy.permission = 'r'
        sap = SharedAccessPolicy(accss_plcy)
        qry_str = self.sas.generate_signed_query_string('images/pic1.png',
                                                        RESOURCE_BLOB,
                                                        sap)

        permission = Permission()
        permission.path = '/images/pic1.png'
        permission.query_string = qry_str
        self.sas.permission_set = [permission]

        web_rsrc = WebResource()
        web_rsrc.properties[SIGNED_RESOURCE_TYPE] = RESOURCE_BLOB
        web_rsrc.properties[SHARED_ACCESS_PERMISSION] = 'r'
        web_rsrc.path = '/images/pic1.png?comp=metadata'
        web_rsrc.request_url = '/images/pic1.png?comp=metadata'

        web_rsrc = self.sas.sign_request(web_rsrc)

        self.assertEqual(web_rsrc.request_url,
                         '/images/pic1.png?comp=metadata&' +
                         self.sas._convert_query_string(qry_str))